我对此有点迷茫。我需要使用两个小数位0.(a-1)(a-2)
像那样,现在我可以使用 .00 .01 .10.11但我也需要负数(在 2 的补码中),那么 .10 会是 -.5 吗?还是 -.25
.11 相同,那将是 -.75 ?还是 -.5
我很确定在这两种情况下都是前者,但我并不完全肯定。

最佳答案

在二进制补码表示法中,负数的所有最高有效位都设置为 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

关于math - 分数的 2 的补码表示?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9946183/

10-11 01:06