一、整数在内存中存储
首先数据在内存中是以二进制的形式存储的。整数的二进制表示有3种分别是原码,反码和补码。他们均由符号位和数值位组成,二进制的最高位为符号位,其余为数值位。符号位都是用0表示“正”,用1表示“负”,正整数的原码、反码和补码都相同 eg:1的原码、反码和补码都为 00000000000000000000000000000001,红色为符号位,其余为数值位。而负整数的原码、反码和补码的表示方法不同。
在负整数中:
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。
补码:反码+1就得到补码
eg: -1的原码:10000000000000000000000000000001
-1的反码:1111111111111111111111111111111111110
-1的补码:1111111111111111111111111111111111111
对于整形来说:数据存放内存中其实存放的是补码。
二、浮点数在内存中存储
首先根据国际标准IEEE(电气和电子工程协会) 754,任意⼀个⼆进制浮点数V可以表示成下面的形式:
:表示符号位,当S=0,V为正数;当S=1,V为负数
M: 表示有效数字,M是⼤于等于1,小于2的
: 表示指数位
eg:5.5的二进制数为101.1,首先先把这个二进制数写成科学计数法的形式,先把小数点前移两位,再乘以他的倍数为1.011*(因为这是个二进制数,小数点前移2位后要乘上),由于这个数是正数,就可以表示成,其中S为0,M为1.011,E为2。而如果是-5的话有同样的方法表示:S为1,M为1.011,E为2。
对于32位的浮点数,最高的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M。