负面位如何工作?
为什么负数位允许负数的绝对值1大于正数(2的恭维)?
为什么不将这个位读入2 ^ x,其中c是位数?
我只是不明白,有人可以帮助我吗?
答案 0 :(得分:1)
存储在计算机中的所有东西都只是一堆。人类建立的惯例将意义归于那些位。例如,根据ASCII标准,01000001可能代表A
。
另一个例子,10100100可能被解释为ISO-8859-1中的¤
(通用货币符号)或ISO-8859-15中的€
(欧元符号)。
类似地,如果这些位应该以二进制补码形式存储有符号数,则数字的第一位可以被解释为负符号位。我们可以选择将10100100视为无符号字节(一百六十四)或带符号字节(负九十二)。
具体来说,将10100100解释为无符号数是很简单的:
1 * 2 ^ 7 + 0 * 2 ^ 6 + 1 * 2 ^ 5 + 0 * 2 ^ 4 + 0 * 2 ^ 3 + 1 * 2 ^ 2 + 0 * 2 ^ 1 + 0 * 2 ^ 0
要将10100100解释为二进制补码形式的带符号数字,请注意按照惯例,第一位表示该数字为负数,因此以下过程开始执行:
- 将位反转为01011011。
- 0 * 2 ^ 7 + 1 * 2 ^ 6 + 0 * 2 ^ 5 + 1 * 2 ^ 4 + 1 * 2 ^ 3 + 0 * 2 ^ 2 + 1 * 2 ^ 1 + 1 * 2 ^ 0 = 91
- 取消并减去一个:-91 - 1 = -92。
答案 1 :(得分:0)
如果有两个补码,则没有两个0的表示形式:
例如,假设您有一个以3位编码的有符号整数:
使用一个补码,000和111都代表0,你的界限将是-3:3