所以我想代表数字-12.5
。所以 12.5 等于:
001100.100
如果我不计算分数,那么很简单,-12
就是:
110100
但什么是-12.5?是110100.100
吗?我如何计算这个负分数?
所以我想代表数字-12.5
。所以 12.5 等于:
001100.100
如果我不计算分数,那么很简单,-12
就是:
110100
但什么是-12.5?是110100.100
吗?我如何计算这个负分数?
对于十进制数系统,每个数字位置(或列)表示(从右到左读取一个数字):个位(即 10^0)、十位(即 10^1)、百位(即 10^2)等。
对于无符号二进制数,基数为 2,因此每个位置变为(同样,从右到左读取):1(即 2^0)、2(即 2^1)、4(即 2^2)等。
例如
2^2 (4), 2^1 (2), 2^0 (1).
在有符号二进制补码中,最高有效位 (MSB) 变为负数。因此它代表数字符号:“1”表示负数,“0”表示正数。
对于三位数字,行将包含以下值:
-4, 2, 1
0 0 1 => 1
1 0 0 => -4
1 0 1 => -4 + 1 = -3
定点(分数)系统保持的位值不变。列值遵循与以前相同的模式,以 (2) 为底,幂为负数:
2^2 (4), 2^1 (2), 2^0 (1) . 2^-1 (0.5), 2^-2 (0.25), 2^-3 (0.125)
-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
您可以一次又一次地将数字加倍,直到它为负整数或达到定义的限制,然后相应地设置小数点。
-25 是 11100111,所以 -12.5 是 1110011.1
所以;你想用 2 的补码表示 -12.5
12.5:->> 01100.1
(01100.1) 的 2 补码:->>10011.1
通过检查 2 的补码表示的加权代码属性来验证 ans(MSB 权重为 -ve)。我们将得到 -16+3+.5=-12.5