C语言中的左移和右移?

C语言中左移<<表示乘以2,右移>>表示除以2,这是由计算机工作原理导致的!但是要是7,二进制数为0111,右移一位得3.5,但是右移之后二进制数变成0011,是3。不一样啊,怎模解释呢??请教高手!

0111右移一位是把最后一位的1去掉,左边补个0,得0011,转换为十进制是3,这是正确的。并不等同于除以2
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-09
移位操作符的两个操作数必须是整型的。整个移位表达式的值的类型也是整型的,而且,左移位操作符与右移位操作符的运算并不对称。本回答被提问者采纳
第2个回答  2020-01-16
左移就是把二进制数向左移动,右边补0,0的二进制全是0,左移之后右边再补0,移5和移6没区别
<<后面的数字表示移多少位
第3个回答  2007-12-24
移位只是对int型进行的操作。如果按是int型的计算,结果是正确的 。
第4个回答  2019-07-30
你优先级没注意,<<的优先级比
^
的高,所以应该先算b<<2
,为00011000;
再算与a异或运算就可以了!