数据类型2_浮点类型

数据类型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.200.1X.00011001
0.2*2==0.400.2X.0011001
0.4*2==0.800.3X.01001
0.8*2==1.610.4X.011001
0.6*2==1.210.5X.1
0.2*2==0.400.6X.1001
0.4*2==0.800.7X.1011
0.8*2==1.610.8 X.11001
0.9X.111001

5指数快速查询

指数A
122==0x7A123==0x7B124==0x7C
125==0x7D126==0x7E127==0x7F
128==0x80129==0x81130==0x82
131==0x83132==0x84133==0x85
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值