对于任意w位的二进制,进行k位的移动时,真实的位移量为k mod w32bit的例子1 << 1 结果2 1 mod 32 => 11 << 32 结果1 32 mod 32 => 01 << 33 结果2 33 mod 32 => 1为什么不设计为 更直观的(个人想法) 直接移动k位1 << 33 => 01 << 666 => 0k mod w的这种设计是有什么特殊意义吗?
2 回答
湖上湖
TA贡献2003条经验 获得超2个赞
C语言里,如果位移量大于等于被操作数的位数,是标准未定义行为。就是编译器怎么处理都可以。In any case, the behavior is undefined if rhs is negative or is greater or equal the number of bits in the promoted lhs.
所以,没什么特殊意义了哦,要问就问编译器厂商吧。编译器厂商:“滚”
添加回答
举报
0/150
提交
取消