c语言位运算左位移问题。

x=01010011,y=x<<2,y=10110000,看不懂。希望详细解说!
2024-11-29 10:17:51
推荐回答(4个)
回答1:

不对吧,左移应该是整体向左边移动,如y=x<<2,就是x的左边去掉2位,后边补2个0,结果应该是:01001100

回答2:

你的例子我也没看懂,呵呵,移位运算是按位进行的,对于算数(逻辑)左移一位相当于乘以二(即如果0000 0001左移一位0000 0010),也就是说左移几位就在右边添加几个零,C中的标准移位不是循环的,因此有可能丢失数据。

回答3:

如果 x=01010011;
那么 y = x<<2;
01010011 往左边移两位 如果 x 是 char 类型,也就是 01001100 溢出了,如果 x 是 int 类型,也就是 0000000101001100 ,位左移一位相当于x乘以 2,移两位等于x乘以 4.

回答4:

垃圾教材误人子弟,我这本14年第三版的也是错的,18年三月第九次印刷的