char 类型占用1字节(byte),8 bit 位。按道理可以表示 28 = 256 个数。
但是对于有符号整数,二进制的最高位表示正负,不表示数值,最高位为 0 时表示正数,为 1 时表示负数。
那么 8 bit 位可以表示的数为 -27 ~ 27 即 -127 ~ -0 和 0 ~ 127 共 256个数。这里多了一个 -0 于是就把 -0 表示成了 -128 。
相关算法
二进制转十进制: 1111 1111 = 1*2^7 + 1*2^6 + 1*2^5 + 1*2^4 + 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 255 二进制每一位的数值乘以它的位权(2^(n-1),n为自右向左的位),再相加。
十进制转二进制:31 = 11111 短除法计算取余数。
名称解释
原码:直接用最高位表示符号位的叫做原码
反码:反码是原码除最高位其余位取反
补码:整数的补码是其本身,负数的补码为其反码加一
https://blog.csdn.net/zy986718042/article/details/71699079