1、大小端字节序
超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储。
大端存储:将一个数据的低位字节内容存放在内存的高地址处,将高位字节的内容存放在低地址处。
小端存储:将一个数据的低位字节内容存放在低地址处,高位字节的内容存放在高地址处。
2、整数在内存中的存储
整数在计算机内存中以二进制形式存储,具体存储方式取决于整数的类型和范围。常见的整数类型包括有符号整数(signed int)和无符号整数(unsigned int)。
整数有原反补三种二进制表示形式,但内存中存放的时补码。
计算使用的时内存中的二进制,计算使用的就是补码。
(1)有符号整数
有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,⽤1表示“负”,最⾼位的⼀位是被当做符号位,剩余的都是数值位。
正整数的原、反、补码都相同。
负整数的三种表⽰⽅法各不相同。
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就得到补码。
(2)无符号整数
无符号的原反补同正整数。
3、浮点数在内存中的存储
浮点数用于表示具有小数部分的数,它们在内存中的存储遵循IEEE 754标准。IEEE 754标准定义了多种浮点数的格式,最常见的是单精度(32位)和双精度(64位)浮点数。
1.浮点数存储可视图
(1)32位浮点数
最高的一位储存符号位S ,接着八位储存指数E ,剩下的二十三位储存有效数字M。
(2)64位浮点数
最高的一位储存符号位S ,接着十一位储存指数E ,剩下的五十二位储存有效数字M。
2.浮点数储存过程
IEEE 754 规定,在计算机内部保存M时,默认这个数的第⼀位总是1,因此可以被舍去,只保存小数点后⾯的部分。
指数E为一个无符号整数(unsigned int),如果E为8位,它的取值范围为0-255;如果E为11位,它的取值范围为0-2047。存⼊内存时E的真实值必须再加上⼀个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。
3.浮点数取出的过程
指数E从内存中取出还可以再分成三种情况:
(1)E不全为0或不全为1
这是常规情况。
浮点数就采⽤下⾯的规则表⽰,即指数E的计算值减去127(或1023),得到真实值,再将有效
数字M前加上第⼀位的1。
0 01111110 00000000000000000000000
(2)E全为0
这是特殊情况之一。
浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第⼀位的1,⽽是还
原为0.xxxxxx的⼩数。这样做是为了表⽰±0,以及接近于0的很⼩的数字。
0 00000000 00100000000000000000000
(3)E全为1
这是特殊情况之二。
如果有效数字M全为0,表⽰±⽆穷⼤(正负取决于符号位s)。
0 11111111 00010000000000000000000