关于移位运算的一些疑惑

对于任意w位的二进制,进行k位的移动时,真实的位移量为k mod w

32bit的例子

1 << 1 结果2 1 mod 32 => 1
1 << 32 结果1 32 mod 32 => 0
1 << 33 结果2 33 mod 32 => 1

为什么不设计为 更直观的(个人想法) 直接移动k位

1 << 33 => 0
1 << 666 => 0

k mod w的这种设计是有什么特殊意义吗?


HUWWW
浏览 559回答 2
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.所以,没什么特殊意义了哦,要问就问编译器厂商吧。编译器厂商:“滚”
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript