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

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

在C中,换挡操作符(<<>>算术还是逻辑?



jeck猫
浏览 996回答 3
3回答

幕布斯7119047

左移时,算术和逻辑移位没有区别。右移时,移位的类型取决于所移动的值的类型。(对于那些不熟悉这种差异的读者来说,“逻辑”右移1位会将所有位移到右边,并用0填充最左边的位。“算术”移位将原始值保留在最左边的位上。在处理负数时,差异变得很重要。)当移动一个无符号值时,C中的>操作符是一个逻辑移位。当移动有符号值时,>操作符是算术移位.例如,假设32位机器:signed&nbsp;int&nbsp;x1&nbsp;=&nbsp;5;assert((x1&nbsp;>>&nbsp;1)&nbsp;==&nbsp;2);signed&nbsp;int&nbsp;x2&nbsp;=&nbsp;-5;assert((x2&nbsp;>>&nbsp;1)&nbsp;==&nbsp;-3); unsigned&nbsp;int&nbsp;x3&nbsp;=&nbsp;(unsigned&nbsp;int)-5;assert((x3&nbsp;>>&nbsp;1)&nbsp;==&nbsp;0x7FFFFFFD);
打开App,查看更多内容
随时随地看视频慕课网APP