1、关于char的取值范围
(1)char占一个字节,每个字节有8位。char又分为有符号型(signed char)和无符号型(unsigned char)。
这二者的不同之处就在于有符号型将最高位作为了符号位,0代表正数,1代表负数。
无符号型的取值范围为0-255(2^8-1),这个很容易理解,因为char型只有8位。
有符号型的取值范围位-128(-2^ 7-1)~127(2^7-1)
出现这种情况是因为计算机是以补码的形式来存储数值的,
而补码有一条规则:正数的补码是其本身,负数的补码是其取反(取反时符号位不变)加一得到。
若说负0与正0则是针对原名来说的:
127:0111,1111 (反码):1111,1111 (补码):1111,1111
0:0000,0000 (反码):0000,0000 (补码):0000,0000
-1:1000,0001 (反码):1111,1110 (补码):1111,1111
-2:1000,0010 (反码):1111,1101 (补码):1111,1110
…
-127:1111,1111 (反码):1000,0000 (补码):1000,0001
-128:1000,0000 (反码):1111,1111 (补码):1000,0000
当我们对127+1的时候,所得到的结果就是-128.在我看来,主要是对于符号位的理解。当自己整理一遍后,就会对其有了深刻的认识。
(2)unsigned char范围是0~255
执行下面这个循环的时候会发现其