char(八位二进制数)范围为什么是-128~127

需要掌握:

按照补码运算

题目没有说是原码还是补码,那么默认按补码算,因为在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