1 数据类型的最高位用于标识数据的符号
最高位为1,表明这个数为负数。
最高位为0,表明这个数为正数。
2 在计算机内部用补码表示有符号数
正数的补码为正数本身
负数的补码为负数的绝对值给位取放后加1
ex:
8位整数5的补码为:0000 0101
8位整数-7的补码为:1111 1001
16位整数20的补码为:0000 0000 0001 0100
16位整数-13的补码为:1111 1111 1111 0011
3 在计算机内部用原码表示无符号
无符号数默认为正数
无符号数没有符号位
4 对固定长度的无符号数
MAX_VALUE + 1 ->MIN_VALUE (0)
MIN_VALUE - 1 ->MAX_VALUE (255)
5 C语言中默认为有符号类型
有符号的数与无符号的进行数学运算时,有符号的数将被看做无符号,这个有符号的数将被看做很大的正数。
(一个很大的正数+ 5的结果肯定大于0的。)
6 unsigned关键字声明变量为无符号类型
C语言中只有整型类型能能够声明unsigned变量
7 ex
ex1:
代码:
演示效果:
ex2:
代码:
演示效果:
8 总结
1.有符号用补码表示
正数的符号为0
负数的符号为1
2.无符号用原码表示
无符号没有符号位
无符号数只能用于表示正数
3.unsigned只能修饰整数类型的变量
当无符号与有符号数混合计算时,会将有符号数。
转换为无符号数再进行计算,结果为无符号数。
在代码写作时,一定要注意区分使用有符号与无符号的使用。