负数在内存中存储方式

你们日常写程序有时候使用有符号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