问题是找到8位二进制数(-00101.110)的2的补码 .
所以我不明白如何处理小数部分 . 我认为1的补码将是11010.001是11010.010的2的补码吗?这些是我需要的8位作为-00101.110的2s补码的最终答案吗?
在二进制补码表示法中,负数的所有最高有效位都设置为1.假设您将这些数字存储为8位,在“二进制点”的右侧有2位 .
根据定义, x + -x = 0 ,所以我们可以这样写:
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
111.000
-0.5加0.5: 111.100
111.100
在你的情况下 110100.10 等于-32 16 4 0.5 = -11.5 . 你做的是创建-12然后添加0.5而不是减去0.5 .
110100.10
你真正想要的是-32 16 2 1 0.5 = -12.5 = 110011.1
110011.1
1 回答
在二进制补码表示法中,负数的所有最高有效位都设置为1.假设您将这些数字存储为8位,在“二进制点”的右侧有2位 .
根据定义,
x + -x = 0
,所以我们可以这样写:等等 .
像这样使用8位,你可以存储的最大数字是
最不正数是
最负数是
而最小的(即最负面的)是
Source
对于十进制数字系统,我们使用单位,数十和数百列,使用无符号二进制数,这将成为列数的1,2,4等2 .
For example
在二进制补码中,最高有效位(MSB)变为负数 . 对于三位数,行将保存这些值;
因此,定点系统所保持的位的值不变 .
-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