我需要找出我们如何在二进制补码系统中以最小位数表示 -1 和 -3 . 我计算了答案 1 和 111 但答案似乎不正确 . 如果我能得到一些帮助,我将非常感激 . 谢谢
-1
-3
1
111
这里's the formula you'可能已经熟悉: N' = 2^n - N . 其中n是位数, N' 是 -N 补码的十进制表示, N 是基数 . 例如, short int x = -6 在转换为 unsigned short int 时将为 N' = 2^8 - 6 = 250 .
N' = 2^n - N
N
short int x = -6
unsigned short int
N' = 2^8 - 6 = 250
现在,使用此公式,您可以获得 n = log(N+N') (基数2的对数) .
n = log(N+N')
Edit:
我更关注的是比特数 . 现在我重新阅读你的问题...让我给你一个答案:你需要至少两位来表示3,你需要一个额外的位来表示符号,这意味着你需要至少3位代表 - 3 . 同样如此 . 考虑到这一点,[011] = 3,取一个的补码(反转位)=> [100]并加1 => [101] = -3 . 对于-1,你也是这样做的 . [01] = 1,反转位=> [10] =>添加一个=> [11] = -1 .
就是这样,我想......
-1 可由 1 表示, -3 可由 101 (-4 1)表示 .
101
111 等于十进制 -1 (-4 2 1) .
2 回答
这里's the formula you'可能已经熟悉:
N' = 2^n - N
. 其中n是位数, N' 是 -N 补码的十进制表示,N
是基数 . 例如,short int x = -6
在转换为unsigned short int
时将为N' = 2^8 - 6 = 250
.现在,使用此公式,您可以获得
n = log(N+N')
(基数2的对数) .Edit:
我更关注的是比特数 . 现在我重新阅读你的问题...让我给你一个答案:你需要至少两位来表示3,你需要一个额外的位来表示符号,这意味着你需要至少3位代表 - 3 . 同样如此 . 考虑到这一点,[011] = 3,取一个的补码(反转位)=> [100]并加1 => [101] = -3 . 对于-1,你也是这样做的 . [01] = 1,反转位=> [10] =>添加一个=> [11] = -1 .
就是这样,我想......
-1
可由1
表示,-3
可由101
(-4 1)表示 .111
等于十进制-1
(-4 2 1) .