基本数据类型的表现形式(整数)

来源:互联网 发布:js search汉字 编辑:程序博客网 时间:2024/05/01 22:13

 无符号整数

    在内存中,无符号整数的所有位都用来表示数值,以unsigned int 为例,此类型变量在内存中占4字节,8个十六进制数组成,取值范围为0x00000000~ 0xFFFFFFFF。

    无符号整型不足32位时,用0来填充剩余高位。对于x86架构,内存中以“小尾方式”,也称为“小端方式”存放,小尾方式的存放是以字节为单位,按照长度,低数据位排放在内存的低端,高数据位排放在内存的高端,如0x12345678将会存储为78 56 34 12,在其他计算机体系里,也有大尾方式,即低数据位存放在内存高端,高数据位存放在内存低端。0x12345678将会存储为12 34 56 78。

    无符号整型无正负之分,在内存中以真值形式存放。

 

 有符号整数

   有符号整数中用来表示符号的是最高位,最高位0表示正数,1表示负数。取值范围为0x80000000~0x7FFFFFFF。如果是十进制,表示范围为-2147483648 ~ 2147483647 。

   有符号整数中,正数的表示区间为:0x00000000~0x7FFFFFFF;负数的表示区间为:0x80000000 ~0xFFFFFFFF。

   有符号整数在内存中以补码形式存放,正数的补码等于真值,而负数的补码规则是用0减去这个数的绝对值,也可以表示为这个数取反加1,对于-3,可以表示为0-3,而0xFFFFFFFD+3等于0,所以-3的补码为0xFFFFFFFD,为了计算方便常用取反加一的方式求的补码,因为对于任何四字节数值,都有X+X(反) = 0xFFFFFFFF,于是X+X(反)+1 = 0,于是可以推导出0-x=x(反)+1。

   在数据分析中,如果将内存解释为有符号整数,则查看用十六进制数表示时的最高位,最高位小于8则为正数,大于8则为负数,如果是负数,需要转换为真值才能得到对应的负数数值

  

 

原创粉丝点击