n位二进制 整数 的补码、移码的数值范围、数值个数 作者:马育民 • 2025-03-31 13:25 • 阅读:10008 需要掌握: - [二进制转十进制、十进制转二进制,十六进制转十进制](https://www.malaoshi.top/show_1GWr74nOCSI.html "二进制转十进制、十进制转二进制,十六进制转十进制") - [原码、反码、补码](https://www.malaoshi.top/show_1IX5uuS5em5G.html "原码、反码、补码") # 先说结论 ### 补码范围 n位二进制数补码的数值范围: ``` -2^(n-1) ~ 2^(n-1) - 1 ``` ### 移码范围 补码的 **符号位 取反,其他与补码相同** 所以范围与补码范围相同: ``` -2^(n-1) ~ 2^(n-1) - 1 ``` ### 数值个数 ``` 2^n ``` 多了一个人为指定的 二进制数 `1000 000` 表示 `-128` # 8位二进制正数的值(补码) - 正数的补码:就是自己本身 8位二进制正数的补码如下(第一位是符号位): ``` 0000 0000 表示0 0000 0001 表示1 0000 0010 表示2 0000 0011 表示3 .... 0111 1111 表示127 ``` ### 正数最大值 127 所以正数的最大值是 `127` ### 正数最大值公式 最大值公式:`2^(n-1) - 1` ### 正数个数 128个数字 # 8位二进制负数的值(补码) - 负数的反码:在原码的基础上,**按位取反**,**符号位不变** - 负数的补码:在自身 **反码** 的基础上加 `1` 8位二进制负数的补码如下(第一位是符号位): ``` 1111 1111 表示 -1 1111 1110 表示 -2 1111 1101 表示 -3 .... 1000 0001 表示 -127 ``` ### 1000 0000 表示什么?(-128的来源) 通过上面的计算得知,不会有补码是 `1000 0000` 因此,这里就特别规定,这个二进制,定义为 `-128`,即:**负数最大值** ### 负数最大值 -128 所以负数最大值 `-128` ### 负数最大值公式 负数最大值公式:`-2^(n-1)` ### 负数个数 128个数字,因为有人为制定的 `-128` # 数值个数 `128 个正数 + 128 个负数 = 256 个数` ### 公式 ``` 2^n ``` 参考: https://blog.csdn.net/qq_51216031/article/details/136319167 原文出处:http://malaoshi.top/show_1GWrM5UqZyI.html