大家平常写程序有时候使用有符号int,有时候使用无符号unsigned int,那么它们在内存中究竟怎么存放的呢?
无符号:因为没有负数,还是按照该数字存放
有符号
带符号最高位为符号位:
0:正数
1:负数
先灌输几个概念,学过通信原理的应该都知道
原码:正数是二进制本身,负数是它绝对值,加上最高位的符号位
5:0000 0000 0000 0000 0000 0000 0000 0101
-5:1000 0000 0000 0000 0000 0000 0000 0101
反码:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反
5:0000 0000 0000 0000 0000 0000 0000 0101
-5:1111 1111 1111 1111 1111 1111 1111 1010
补码:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后加1
5:0000 0000 0000 0000 0000 0000 0000 0101
-5:1111 1111 1111 1111 1111 1111 1111 1011
所以-5在32位系统内存中保存为:0xfffffffb