1,char取值
char是字符类型,大小是一个字节,分为有符号char和无符号char
无符号char取值为0——255
有符号char取值为-128——127
为什么有符号char取值不对称呢
可以看到从00 00 00 00开始到01 11 11 11一切正常在加1,为10 00 00 00,而这个数在内存中就被认为是-128,可以看到char存储像是一个轮回,不断加1最终丢去数据继续轮回
2,浮点数在内存中存储
根据国际标准IEEE(电⽓和电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式:
V
= (−1)^
S *
M
∗ 2^
E
•
(−1)^
S
表⽰符号位,当S=0,V为正数;当S=1,V为负数
•
M 表⽰有效数字,M是⼤于等于1,⼩于2的
•
2 ^
E
表⽰指数位
举例来说:
⼗进制的5.0,写成⼆进制是
101.0
,相当于
1.01×2^2
。
那么,按照上⾯V的格式,可以得出S=0,M=1.01,E=2。
⼗进制的-5.0,写成⼆进制是
-101.0
,相当于
-1.01×2^2
。
那么,S=1,M=1.01,E=2。
IEEE 754规定:
对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M
对于64位的浮点数,最⾼的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M
存储过程:M是一个大于1的数所以直接就不用存这个1了,使用数据时加上即可
因为需要存负数所以E-8Bit这个位置就去一个中间变量127,存储时用127+E存储就可以分辨正负了