最小有符号整数的绝对值
一、有符号整数的存储现代计算机中有符号整数通常以二进制补码形式存储。正整数的补码和原码相同;负整数的补码由其对应正整数的原码取反后加1。
以4位的-5为例:
对应正整数的原码为5原码=01012
| 0 | 1 | 0 | 1 | |
| 取反 | 1 | 0 | 1 | 0 |
| +1 | 1 | 0 | 1 | 1 |
所以-5的补码形式为-5补码=10112
二、位数和最小值之间的关系
3位二进制补码和十进制有符号整数之间的对应关系如下表所示:
| 位 | 值 |
| 000 | 0 |
| 001 | 1 |
| 010 | 2 |
| 011 | 3 |
| 100 | -4 |
| 101 | -3 |
| 110 | -2 |
| 111 | -1 |
4位二进制补码和十进制有符号整数之间的对应关系如下表所示:
| 位 | 值 |
| 0000 | 0 |
| 0001 | 1 |
| 0010 | 2 |
| 0011 | 3 |
| 0100 | 4 |
| 0101 | 5 |
| 0110 | 6 |
| 0111 | 7 |
| 1000 | -8 |
| 1001 | -7 |
| 1010 | -6 |
| 1011 | -5 |
| 1100 | -4 |
| 1101 | -3 |
| 1110 | -2 |
| 1111 | -1 |
通过上述两表不难发现有符号整数的最小值和位数之间的关系,具体如下所示:
| 位数 | 值 | 补码 |
| 3 | -4 | 100 |
| 4 | -8 | 1000 |
| 5 | -16 | 10000 |
| ... | ... | ... |
| N | -2N-1 | 100000(N-1个0) |
三、最小有符号整数的绝对值
先以-5为例,-5的绝对值是5,看看是如何从-5到5的。
| 1 | 0 | 1 | 1 | |
| -1 | 1 | 0 | 1 | 0 |
| 取反 | 0 | 1 | 0 | 1 |
对负整数取绝对值其实就是对其补码减一后取反;同样对最小负整数取绝对值也就是对其补码减一后取反。
以4位有符号整数的最小值为例,其二进制补码形式为:1000
| 1 | 0 | 0 | 0 | |
| -1 | 0 | 1 | 1 | 1 |
| 取反 | 1 | 0 | 0 | 0 |
结果的补码形式为:1000
所以最小有符号整数的绝对值还是其自身。