[求助]位运算问题
有个题目有点看不懂了int a=13;
为什么~a<<2得到的是-56???
想不通啊
大家过来帮帮忙
原因是这样的,先进行取余运算
0000 1101 (13)
1111 0010
然后进行<<2
1100 1000
因为这个时候符号位已经为1,而数在计算机中用补码表示
所以真值为
(1100 1000)补
为1011 1000
为-56
明白了吗??
原因是这样的,先进行取余运算
0000 1101 (13)
1111 0010
然后进行<<2
1100 1000
因为这个时候符号位已经为1,而数在计算机中用补码表示
所以真值为
(1100 1000)补
为1011 1000
为-56
明白了吗??
也就是说只有负数才会在计算机中以补码显示?
~求反,单目
^异或,双目
~比^运算的优先级高很多,
至于编码,还要看在什么环境下,有些int 16bit,有些是32bit,
楼主可以去看看计算机组成原理课本,