我一直在尝试将数字 -441 转换为二进制数,但我真的不知道如何才能做到这一点。
我首先将 441 转换为二进制,即:110111001 然后我应该接受这个数字的恭维,即:001000110 然后我必须添加一个结果:001000111
练习说我必须用 10 位和 16 位给出二进制表示,所以我虽然我可以在数字前放一个零,就是这样,但是经过大量搜索我发现我应该把数字前加一,为什么会这样?
我将如何将 -441 转换为 16 位数字?
谢谢你。
gro*_*taj 18
你很困惑,因为你忘记了一定有什么东西可以区分正数和负数。
假设您想在 8 位上存储非负数。
00000000 是 0,00000001 是 1,00000010 是 2,00000011 是 3,00000100 是 4,11111111 是 255因此,您可以在 8 位上存储 0-255 范围内的数字。255 = 2 8 - 1.(2是二进制的基数,8是位数,减1是因为我们要算0)
现在,假设您也想存储负数。我们怎样才能做到这一点?我们可以将一位专用于符号。如果这个位是0那么我们将其他 7 位解释为正数,否则为负数。最好使用最高有效位作为符号,因为它使某些操作更容易。
简单的方法:只需按原样读取数字:
00000001== 1 和10000001== -101000010== 66 和11000010== -6601111111== 127 和11111111== -127一个的补码:对于任何数x,否定其二进制表示产生 的二进制表示-x。这意味着:
00000001== 1 和11111110== -101000010== 66 和10111101== -6601111111== 127 和10000000== -127二进制补码:对于任何数x,将其二进制表示取反并加 1 产生 的二进制表示-x。这意味着:
00000001== 1 和11111111== -101000010== 66 和10111110== -6601111111== 127 和1000001== -12710000000 == -128为什么补码是最好的?
00000000零00000000和10000000都为零00000000和11111111都为零请注意,如果我们将最高有效位专用于符号位,那么我们无法在不知道需要多少位的情况下将数字转换为二进制。例如,我们有 4 位,那么简单方法中的数字 -5 是1101,在 7 位上它将是1000101。0001101(4 位 -5 用零填充到 7 位长度)实际上是 13(最高有效位是 0,所以它是正的)。
我不会为你做功课,但我可以给你一般的提示:
-x为N位长二进制补码表示:-x使用二进制补码转换为二进制。N-1长度。我想你可以从这个答案中找出其余的。如果您还有其他问题,请发表评论。
| 归档时间: |
|
| 查看次数: |
62002 次 |
| 最近记录: |