如何解决关于算术右移运算符的问题
我在处理这个特定操作时遇到了一些麻烦-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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。