存数据时,看数据
取数据时,看类型
unsigned char 取值范围是 0 —— 255 ,不会小于0
unsigned char a = -5; // 存入-5 ,计算机以补码进行存储
原码 1000 0101
反码 1111 1010
补码 1111 1011
printf("%u",a) //251 取数据时,看类型 unsigned char ,因此不会看符号位 1111 1011
8个bit位无法表示 -128 , 有cpu提供一个 符号位
1 1000 0000 —— 原码
1 0111 1111 —— 反码
1 1000 0000 —— 补码 // 刚好为 1000 0000 ,所以就用 1000 0000 表示 -128
unsigned char 取值范围是 0 —— 255 ,不会小于0
char 取值范围是 -128 —— 127 2^7 — 2^7 - 1
1000 0000 表示 -128 = -2 ^ 7
short 取值范围是 2^15 — 2^15 - 1
1000 0000 0000 0000 = -2 ^ 15
int 取值范围是 2^31 — 2^31 - 1
1000 0000 0000 0000 0000 0000 0000 0000 = -2 ^ 31