gpt4 book ai didi

math - 如何将无符号数从有符号数转换为无符号数(二进制和十六进制)?

转载 作者:行者123 更新时间:2023-12-02 02:10:24 24 4
gpt4 key购买 nike

所以我正在尝试从 Randall Hyde 的书中学习汇编语言:汇编语言的艺术,我已经完成了第一章的学习,现在我正在尝试做练习。我有以下问题:如何转换二进制值(正或负)转换为相反符号的十六进制值。是的,我知道如何用二进制表示从 0 到 15 的数字,而且 10 是 f 等等...... 我遇到的问题如下..我得到了这个数字:1001 1001,我必须将它转换成相反的值。到目前为止,我已经使用了二进制补码并获得了这个:

1001 1001 ----->shifting bits -----> 0110 0110
add 1 -----> 0110 0111

我应该得到第一个数字的相反数。相反,当我计算结果的值时,我得到这个:

1001 1001 = 2^0+2^3+2^4+2^7 = 1+8+16+128 = 153 (which in my opinion is fine...)

转换数字后我得到这个:

0110 0111= 2^0+2^1+2^2+2^5+2^6 = 1+2+4+32+64 = -103

我做错了什么?

最佳答案

您的术语有点不对。您想要翻转位(您已经这样做了),而不是“移动”它们(这是您稍后会学到的内容。

是什么让您认为自己做错了什么?一个数 x 的负数是另一个数 y 使得 x + y = 0。让我们看看您的两个数字并将它们相加:

  1001 1001
+ 0110 0111
-----------
1111 1112
^ oops, 2 should be 10, so record 0 and carry the 1

1111 1110
+ 10
-----------
1111 1120
^ oops, 2 should be 10, so record 0 and carry the 1

如果你继续携带 1,你能看到这会结束吗?

这里要吸取的教训是,为了解释一个数字,您需要知道它是否打算成为一个带符号的数字。如果它是一个带符号的数字并且设置了符号位,那么为了将它转换为人类输出,你应该首先取反这个数字,使其为正数,然后输出一个负号和一个正数。

关于math - 如何将无符号数从有符号数转换为无符号数(二进制和十六进制)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13234718/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com