文章目录
1,整形在内存中的存储
1.1 原码,反码,补码
符号位为0时代表“正”,为1时代表“负”。
负数的原,反,补:
原码表示方法:直接将数值按照正负数的形式翻译成二进制。
反码表示方法:原码除了符号位按位取反。
补码表示方法:反码+1。
正数的原码,反码,补码,都相同。
对于整形:数据存放内存中存放的是补码。
因为在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码。可以将符号位和数值域和数值域统一处理,同时加法和减法也可以统一处理(cpu只有加法器),补码与原码相互转换,其运算过程相同,不需要额外的硬件电路。
这里有个疑问箭头的位置和内存存放的顺序是反的。
2 大小端的介绍
2.1 大端存储模式:数据的低位保存在内存的高地址中,数据的高位,保存在内存的低地址中。
2.2 小端存储模式:数据的高位保存在内存的高地址中,数据的低位,保存在内存的低地址中。
3.浮点型在内存中的存储
3.1 根据国际标准IEEE(电器和电子工程协会)754,任意一个二进制浮点数v可以表示成下面的形式:
- (-1)^ S * M *2^E
- (-1)^ S表示符号位,当S = 0,v为正数;当S = 1, V为负数。
- M表示有效数字,大于等于1,小于2。
- 2^E表示指数位。
3.2 对于32位的浮点数,最高的1位时符号位s,接着的8位是指数E,剩下的23位为有效数字M。
IEEE对于有效数字M和指数E
在计算机内部保存M时,默认这个数的第一位总是1,因此可以被舍去。例如1.01,只保存01.等读取时再把第一位的1加上去,这样是为了节省1位有效数字。
E为一个无符号整数
IEEE对于指数E的真实值必须在加上一个中间数,对于8位的E,中间数是127。例如2^2E就是2,保存成32位浮点数时,必须保存2 + 127 = 129,即 10000001
3.2 指数E从内存中取出还可以分成三种情况。
1,E不全为0或不全为1
指数E的计算值减去127(单精度)或1023(双精度),有效数字M前加上第一位的1。
2,
3,