我有一个特定的 C 位移场景,我认为 Stack Overflow 尚未涵盖该场景。(如果是的话,我还没找到!)
本练习使用signed int
s 作为数据类型。
取值0x80000000
(最高有效位仅为 1。)
使用算术右移(我的做法)在机器上将其右移一次。
结果 = 0xC0000000
(最左边字节中的 1100 0000)。
继续移动它,你应该从左到右填充它们。
结果 = 0xFFFFFFFF
(全部。)
但是: 尝试相同的示例,但移动一个额外的位置,全部一起:
0x80000000 >> 0x00000020
(右移 32 次)
你的结果?我不知道。我的结果不是全部。事实上,我得到了0x00000001
这不是我想要的行为。为什么是这样?它是特定于机器的吗?
(背景:家庭作业将我的操作限制为几个位运算符来解决难题。这是难题的一个方面,但远非整个问题。)