signed char a = 0xb6;将a转换成signed int型,为什么值是0xffffffb6呢?解决办法

signed char a = 0xb6;将a转换成signed int型,为什么值是0xffffffb6呢?
这中间过程是怎么样的。想了很久,还是不理解

------解决方案--------------------
0xb6是负数,是用补码表示的,百度一下就知道了
------解决方案--------------------
符号扩展
------解决方案--------------------
对于signed 类型的扩展,根据符号为判断,也就是左边第一位的值,
如果是1,则扩展的位全部是1,否则是0.
unsigned的扩展,全部补零