关于算术右移运算符的问题

问题描述

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

解决方法

据我所知,这是 Computer Science: A Programmer's Perspective(第 3 版)的 global edition 练习题 2.16,根据原作者的说法,它充满了错误。

直接引用errata page

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

如果您对练习和家庭作业问题感兴趣,网上的建议似乎是选择北美版。

你的答案确实是正确的:

0x44 >> 3 == 0x08