首页 文章

带分数的二进制的二进制补码

提问于
浏览
1

问题是找到8位二进制数(-00101.110)的2的补码 .

所以我不明白如何处理小数部分 . 我认为1的补码将是11010.001是11010.010的2的补码吗?这些是我需要的8位作为-00101.110的2s补码的最终答案吗?

1 回答

  • 0

    在二进制补码表示法中,负数的所有最高有效位都设置为1.假设您将这些数字存储为8位,在“二进制点”的右侧有2位 .

    根据定义, x + -x = 0 ,所以我们可以这样写:

    0.5  +  -0.5 = 0.10 + 111111.10 = 0   // -0.5  = 111111.10
    0.25 + -0.25 = 0.01 + 111111.11 = 0   // -0.25 = 111111.11
    0.75 + -0.75 = 0.11 + 111111.01 = 0   // -0.75 = 111111.01
    

    等等 .

    像这样使用8位,你可以存储的最大数字是

    011111.11 = 31.75
    

    最不正数是

    000000.01 = 0.25
    

    最负数是

    111111.11 = -0.25
    

    而最小的(即最负面的)是

    100000.00 = -32
    

    Source

    对于十进制数字系统,我们使用单位,数十和数百列,使用无符号二进制数,这将成为列数的1,2,4等2 .

    For example

    2^0 (1), 2^1 (2), 2^2 (4).
    

    在二进制补码中,最高有效位(MSB)变为负数 . 对于三位数,行将保存这些值;

    -4, 2, 1
     0  0  1 => 1
     1  0  0 => -4
     1  0  1 => -4 + 1 = -3
    

    因此,定点系统所保持的位的值不变 .

    -1永远是 111.000

    -0.5加0.5: 111.100

    在你的情况下 110100.10 等于-32 16 4 0.5 = -11.5 . 你做的是创建-12然后添加0.5而不是减去0.5 .

    你真正想要的是-32 16 2 1 0.5 = -12.5 = 110011.1

相关问题