(—)整形在内存中的存储
首先我们要知道原反补三种,在数据在内存中存处的是补码
<1>int 类型
在数据中占4个字节32个比特位,以二进制编码的形式存储
分为以下两种情况
有符号int->signed int
最高位为符号位1为负0为正,数据范围位-2^31~2^31-1
1.正数
正数原反补相同,最高位为符号位
如10在内存中存储的就是
0000 0000 0000 0000 0000 1010
2.负数
对于负数而言则有所不同
原码——>反码:符号位不变,其他位按位取反
反码——>补码:反码+1
举个例子而言如-1在内存中的存储
首先写出原码:
1000 0000 0000 0000 0000 0000 0000 0001
反码:
1111 1111 1111 1111 1111 1111 1111 1110
补码:
1111 1111 1111 1111 1111 1111 1111 1111
无符号int->unsigned int
在内存中原反补相同,数据数据范围为0~2^32
#include<stdio.h>
int main()
{
unsigned int a=-1;
printf("%u",a);//答案是多少呢?
}
首先我们要知道-1在内存中是如何存储的
由上可知-1的存储为
1111 1111 1111 1111