首页 > 解决方案 > 关于算术右移运算符的问题

问题描述

我在处理这个特定的操作时遇到了一些麻烦——
0x44 >> 3
其中 >> 是一个算术右移运算符。
现在,我所指的教科书给出了答案1110 1000
但是,我这样做如下
0x44- =>0100 0100
现在,由于第一位是零,我将算术右移的结果计算为0000 1000(十六进制值 0x08)
但是,这本书给出的答案是1110 1000(十六进制值0xE9
我在这里做错了什么?(书是CS:APP,有兴趣的练习题2.16)。

标签: operatorsbitwise-operatorsbit-shift

解决方案


据我所知,这是全球版计算机科学:程序员的视角》(第 3 版)中的练习题 2.16,根据原作者的说法,其中充满了错误。

勘误页面直接引用:

全球版注意事项:不幸的是,出版商安排了在全球版中生成一组不同的练习和作业问题。做这件事的人做得不是很好,所以这些问题和他们的解决方案有很多错误。我们没有为此版本创建勘误表。

如果你有兴趣做练习和家庭作业,网上的建议似乎是选择北美版。

你的答案确实是正确的:

0x44 >> 3 == 0x08

推荐阅读