数据类型2_float
1、浮点类型:float、double
120/2 0
60/2 0
30/2 0
15/2 1
7/2 1
3/2 1
1/2 1
2、将一个float型转化为内存存储格式的步骤:
1)先将这个实数的绝对值转化为二进制格式
2)将这个二进制格式实数的小数点左移或右移n位,直到小数点移动到第一个有效数字的右边
3)从小数点右边第一位开始数出二十三位数组存入第22到第0位。
4)如果实数是正的,则在第31位放入0,否则放入1
5)如果n是左移得到的,说明指数是正的,第30位放入1,如果n是右移得到的或n=0则30位放0
6)如果n是左移得到的,则将n减1后化为二进制,并在左边加0补足7位,放入第29到23
如果n是右移得到的或n==0,则将n化为二进制后在左边加0补足,再各位求反,放到29到23位。
8.4
8/2=4 0 0.4*2=0.8 0
4/2=2 0 1.6 1
2/2=1 0 1.2 1
举例说明:8.25(1000.01) 1/2=0 1 0.4 0
0.8 0
0.25*2=0.5 0 1.6 1
0.5*2=1 1
1000.01 = 1.00001*2的3次方 小数点向左移动3位,指数为3
1 8 23
0 1 000 00 10 0 0 0 0 1 000000000000000000
正数存0
4104 0000
-8.25
符号 指数 尾数
1 1 000 00 10 0 0 0 0 1 000000000000000000
1:负数 1:左移
3-1 =2
10
1 000 0010
1100 0001 0000 0100 0000 0000 0000 0000
C104 0000
0.25
整数部分 0
二进制 科学
小数 10 0.01 0.01 = 1.0* 2的-2次方
往右移2位
符号 指数 尾数
0 0 111 1101 0000000000
0 右移
-3:FE FF -1 FE-2 FD -3
1111 1110
0 111 1101 -0.25
0011 1110 1000 0000 0000 0000 0000 1011 1110 1000 0000 0000
3E80 0000 BE80 0000
0.5
整数:0 小数 0.5*2=1 1
二进制 0.1 科学 1.0*2的-1次方
符号 指数 尾数
0 0 111 1110 0000000000
0 :右移
-1-1=-2 = FE
1111 1110
0 111 1110
0011 1111 0000 0000 0000 0000 0000 0000
3F00 0000
12.5
二进制:1100.1 正数:12 1100 负数.0.5
科学:1.1001*2^3 12/2 =6 0 0.5*2=1 1
整数 先转16进制,然后。。。哈哈 6/2 =3 0
指数:127+x 3/2=1 1
1/2=0 1
符号 指数 尾数
0 1 000 0010 0000000000
正数 1:左移 1001 0000 0000 0000 0000 000
3-1=2
0000 0010
1 000 0010 **127 +3 ==0x82 == 1000 0010**
0100 0001 0100 1000 0000 0000 0000 0000
4148 0000
131: float fNum = 0.25f; 3E80 0000
00411E5E movss xmm0,dword ptr ds:[00415884h]
00411E66 movss dword ptr [ebp-8],xmm0
132: float fNum1 = -0.25f; BE80 0000
00411E6B movss xmm0,dword ptr ds:[004158DCh]
00411E73 movss dword ptr [ebp-14h],xmm0
134: float fNun = 0.5f; 3F00 0000
00411E78 movss xmm0,dword ptr ds:[00415874h]
00411E80 movss dword ptr [ebp-20h],xmm0
135:
136: float fNumz = 8.25f; 4104 0000
00411E85 movss xmm0,dword ptr ds:[004158D8h]
00411E8D movss dword ptr [ebp-2Ch],xmm0
137: float fNumz1 = -8.25f; C104 0000
00411E92 movss xmm0,dword ptr ds:[004158E0h]
00411E9A movss dword ptr [ebp-38h],xmm0
11.75
整数 小数 0.11
11 = B 0.75*2=1.5 1
1011 0.5*2 =1 1
二进制:1011.11 科学:1.01111*2^3
符号 指数 尾数
0 1 000 0010 011 1100 0000 0000 0000
0 :+ 127+3 = 0x82
1000 0010
0100 0001 0011 1100 0000 0000 0000
413C 0000
3自己理解的浮点数
(1)整数部分:转化为16进制,然后转二进制
(2)小数部分:*2完了,从上往下看
(3)用二进制科学计数表示
(4)符号:正数为0,负数为1
尾数:科学计数的小数部分,不足右边补0
指数:方法1:127+指数===转为16进制,填写。
方法2:第一位:左移为1,右移为0,不变为0
后7位:指数-1的值用二进制表示的后7位。
注意:-2 ==FD,-1=FF,用这样看,就不用计算反码了。
(5)正数和负数的二进制高位是互补的,低位不变。
(6)0.25==3E80 0000 -0.25 == BE80 0000
0.5 == 3F00 0000
11.75== 413C 0000
8.25 ==4104 0000 -8.25==C104 0000
4 小数查询表
小数计算 | A | 小数 | 值 |
---|---|---|---|
0.1*2==0.2 | 0 | 0.1 | X.00011001 |
0.2*2==0.4 | 0 | 0.2 | X.0011001 |
0.4*2==0.8 | 0 | 0.3 | X.01001 |
0.8*2==1.6 | 1 | 0.4 | X.011001 |
0.6*2==1.2 | 1 | 0.5 | X.1 |
0.2*2==0.4 | 0 | 0.6 | X.1001 |
0.4*2==0.8 | 0 | 0.7 | X.1011 |
0.8*2==1.6 | 1 | 0.8 X.11001 | |
0.9 | X.111001 |
5指数快速查询
指数 | A | |
---|---|---|
122==0x7A | 123==0x7B | 124==0x7C |
125==0x7D | 126==0x7E | 127==0x7F |
128==0x80 | 129==0x81 | 130==0x82 |
131==0x83 | 132==0x84 | 133==0x85 |