前言
对于整型家族里的C语言内置数据结构:char,short,int long来说,都有无符号(unsigned)和有符号(signed)之分。整型家族在内存中都是以补码的形式存在.
一、整型家族
char :unsigned char,signed char
short :unsigned short,unsigned short
int :unsigned int,signed int
long:unsigned long,signed long
二、什么是原码,反码,补码
整型家族在内存中都是以补码的形式存在,对于正数来说,它的原码,反码,补码相同,对于负数,用以下的例子说明
int i=-2;
我们把i按照二进制序列写出来就是i的原码(把10进制数字写成32位的二进制数字),原码的首位叫做符号位,首位为0代码整数,首位为1代表负数,因为i是int类型,占四个字节,32个比特位,每一个比特位对应一个二进制数字0或者1,那么i的原码就是:
10000000 00000000 00000000 00000010
对原码除符号位以外的每一位按位取反的到反码,则i的反码为:
11111111 11111111 11111111 11111101
反码加一个二级制的1,得到补码,则i的补码为
11111111 11111111 11111111 11111110
三、存储
1.大端存储
数据的低位存储在内存的高地址中,数据的高位存储在内存的低地址中
2.小端存储
数据的低位存储在内存的低地址中,数据的高位存储在内存的高地址中