我正在研究按位运算和有符号数字表示。我已经认识到,如果我们在补码模式上进行左移。它没有正确地乘以原始数字。
例如(一个补码):
11100101 (-26) << 1 = 11001010 (-53)
11110100 (-11) << 2 = 11010000 (-47)
-26 左移 1 位给出 -53(不是 -52),-11 左移 2 位给出 -47(不是 -44)。这就是人们选择二进制补码进行精确数字运算的原因。我在谷歌上搜索过,但没有提到左移和补码的帖子。几乎提到了带补码的左移