数据类型2_浮点类型

来源:互联网 发布:php弹出提示框 编辑:程序博客网 时间:2024/05/23 00:07

数据类型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
0 0