从十进制到二进制的二进制转换

问题描述 投票:0回答:1

在进行二进制学习时,我遇到了以下情况。如果您能提供一些帮助,我将不胜感激..

当二进制值是连续 16 位 1 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 时,为什么十进制值会变成'-1'

assembly binary
1个回答
0
投票

在二进制表示中,您描述的值“1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111”实际上是当解释为有符号整数时-1在二进制补码表示法中的二进制表示。

在二进制补码表示法中,最高有效位(最左边的位)表示数字的符号。如果为0,则为正数,如果为1,则为负数。

我们来分解一下为什么“1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111”代表-1:

最左边的位为1,表示该数为负数。 其余位“1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111”表示正1的二进制值。 当以二进制补码表示法解释为负数时,该值是通过取正值的二进制补码并加 1 来计算的。 正1的二进制补码是“0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001”。 二进制补码加 1 得到“0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0010”,溢出,仅保留低 64 位,结果为“1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111" 。 因此,“1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111”在二进制补码表示法中表示 -1。

© www.soinside.com 2019 - 2024. All rights reserved.