为了账号安全,请及时绑定邮箱和手机立即绑定

移位操作符(<,>)算术还是逻辑在C中?

移位操作符(<,>)算术还是逻辑在C中?

C C++
jeck猫 2019-07-06 16:02:22
移位操作符(<,>)算术还是逻辑在C中?在C中,换挡操作符(<<, >>算术还是逻辑?
查看完整描述

3 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

左移时,算术和逻辑移位没有区别。右移时,移位的类型取决于所移动的值的类型。

(对于那些不熟悉这种差异的读者来说,“逻辑”右移1位会将所有位移到右边,并用0填充最左边的位。“算术”移位将原始值保留在最左边的位上。在处理负数时,差异变得很重要。)

当移动一个无符号值时,C中的>操作符是一个逻辑移位。当移动有符号值时,>操作符是算术移位.

例如,假设32位机器:

signed int x1 = 5;assert((x1 >> 1) == 2);signed int x2 = -5;assert((x2 >> 1) == -3);
unsigned int x3 = (unsigned int)-5;assert((x3 >> 1) == 0x7FFFFFFD);


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 962 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信