char(八位二进制数)范围为什么是-128~127 作者:马育民 • 2025-03-30 23:15 • 阅读:10005 需要掌握: - [二进制转十进制、十进制转二进制,十六进制转十进制](https://www.malaoshi.top/show_1GWr74nOCSI.html "二进制转十进制、十进制转二进制,十六进制转十进制") - [原码、反码、补码](https://www.malaoshi.top/show_1IX5uuS5em5G.html "原码、反码、补码") # 按照补码运算 题目没有说是原码还是补码,那么默认按补码算,因为在CPU计算时,是以 **补码** 运行的 # 正数的值(补码) - 正数的补码:就是自己本身 8位二进制正数的补码如下(第一位是符号位): ``` 0000 0000 表示0 0000 0001 表示1 0000 0010 表示2 0000 0011 表示3 .... 0111 1111 表示127 ``` ### 正数最大值 127 所以正数的最大值是 `127` # 负数的值(补码) - 负数的反码:在原码的基础上,**按位取反**,**符号位不变** - 负数的补码:在自身 **反码** 的基础上加 `1` 8位二进制负数的补码如下(第一位是符号位): ``` 1111 1111 表示 -1 1111 1110 表示 -2 1111 1101 表示 -3 .... 1000 0001 表示 -127 ``` ### 1000 0000 表示什么?(-128的来源) 通过上面的计算得知,不会有补码是 `1000 0000` 因此,这里就特别规定,这个二进制,定义为 `-128`,即:**负数最大值** ### 负数最大值 -128 所以负数最大值 `-128` 参考: https://blog.csdn.net/qq_51216031/article/details/136319167 原文出处:http://malaoshi.top/show_1GWr7hfiJT3.html