我对此有点迷茫。我需要使用两个小数位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/