要知道char类型的大小范围,首先要知道char类型占1个字节,而1个字节等于8个bit位,每一个bit位是一位二进制数,所以char类型有8个二进制位,那么就有2的8次方256种可能。
我们先讨论(signed) char(有符号)首位是符号位,所以char类型最大是01111111,即127。
所以在0~127属于char类型的范围
但是我们发现了一个奇怪的组合10000000,“-0”,但它真的是-0吗?不是的,它是-128
//-128的二进制表示
//原码: 10000000 00000000 00000000 10000000
//取反加一得补码:11111111 11111111 11111111 11111110
//截断后得: 11111110
//"-0"的二进制
//原码: 10000000
//补码: 111111110
//截断后得: 11111110
因为整数在机器中是以补码的形式存储,可知“-0”和“-128”在char中存储是一样的。所以10000000其实就是-128
总之char类型的范围是-128~127
这里提一个小技巧,01111111是127,在它的基础上+1就是-128,+2就是-127,所以可以把char类型的取值看做一个圆,只要一直+1就能遍历的一个圆。
无符号unsigned char 因为最高位不是符号位,和其他位的意义一样,所以最大是2的8次方-1也就是255,范围是0~255