整数类型
四种整数类型:
int , long , short , long long
在VS2019中:
int , long占4个字节
short占2个字节
long long占8个字节
由于二进制不方便显示与阅读,因此内存中的数据采用16进制来表示
1字节由2个十六进制数组成
1个十六进制用4个二进制表示
1个二进制表示1位
->1字节在内存中占8位
整数类型分为:符号型与无符号型
有符号整数:负数与正数
无符号整数只能表示负数
无符号整数
在内存中,无符号整数的所有位都用来表示数值!不存在正负之分,所有无符号整数在内存中都是以真值的形式存放的,每一位都可以参与数据表达。
例子:unsigned int(4字节)
十六进制范围:0x00000000–0xFFFFFFFF
十进制范围:……
当无符号整数不足32位时,用0来填充高位,直到占满4字节内存空间为止
“小尾方式”:存放以字节为单位,按照数据类型长度,低数据位存放在数据的低端,高数据位存放在数据的高端
例子:0x12345678 -> 78 56 34 12
“大尾方式”:数据存储方式与小尾相反,高数据位放在内存的低端,低数据位放在内存的高端
例子:0x12345678 ->12 34 56 78
有符号整数
在内存中占4个字节
符号位:最高位用来表示符号
最高位为:0,表示正数
最高位为:1,表示负数
由于最高位为符号位,不能用来表达数值,因此有符号整数的取值范围比无符号整数的取值范围少1位
十六进制:0x80000000–>0xFFFFFFFF
正数->0x00000000–0x7FFFFFFF
负数->0x80000000–0xFFFFFFFF
负数在内存中都是以补码形式存放的,补码的规则:取反+1;
注意:
对于4字节补码:0x80000000表达可以是负数0也可以是0x80000001-1。
因为0的正负值是相等的,没有必要再用负数0,所有就把这个值的意义规定为0x80000001-1,这样0x80000000也就成为4字节负数的最小值。
这也就是有符号整数的取值范围中,负数区间总是比正数区间多一个最小值的原因。
在数据分析中:
如果将内存解释为有符号整数,则查看用16进制表示时的最高位,最高位小于8则为整数,最高位大于8则为负数。
如果为负数,则必须转为真值,从而得到对应的负数数值。
(今天先这样吧,下面的每天写~)