你们日常写程序有时候使用有符号int,有时候使用无符号unsigned int,那么它们在内存中究竟怎么存放的呢?spa
无符号:由于没有负数,仍是按照该数字存放内存
有符号原理
带符号最高位为符号位:二进制
0:正数程序
1:负数通信
先灌输几个概念,学过通讯原理的应该都知道co
原码:正数是二进制自己,负数是它绝对值,加上最高位的符号位数字
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