Skip to content

Latest commit

 

History

History
32 lines (22 loc) · 1021 Bytes

c-note.md

File metadata and controls

32 lines (22 loc) · 1021 Bytes

整型数据

整型书库在内存中的存放形式

整型数据在32位操作系统中,是32位二进制即4个字节。在64位操作系统中,是64位二进制即8个字节。 下面的例子为了简单,以16位即两个字节表示整型数据。

整数数值在内存中以 补码 的形式存储的:

  • 整数的补码和原码相同
  • 负数的补码:将该数的绝对值的二进制形式按位取反再加1
int i = 10;
// 原码:0000 0000 0000 1010
// 补码:0000 0000 0000 1010

int j = -10;
// 原码:1000 0000 0000 1010
// 补码:1111 1111 1111 0110

int max = 32767; // 2^15 - 1
// 原码:0111 1111 1111 1111
// 补码:0111 1111 1111 1111

int min = -32768; // -2^15
// 原码:1000 0000 0000 0000
// 补码:1000 0000 0000 0000

从上面的存储方式,我们可以发现,有符号的整型数据在存储时,负数的最大值会比正数的最大值大1。这是因为计算机在表示0时,用的是+0,而-0表示负数最大值。