日期:2014-05-20  浏览次数:20702 次

API中解释浮点数运算的一些疑问
int     s     =     ((bits     > >     31)     ==     0)     ?     1     :     -1;                
  这句理解,移动31位后第一位表示正负数    
 
int     e     =     ((bits     > >     23)     &     0xff);                
这句开始有疑问,明白从32-23位表示幂指数部分,但     &     0xff什么意思就不明白了    
 
int     m     =     (e     ==     0)     ?    
                                                              (bits     &     0x7fffff)     < <     1     :    
                                                              (bits     &     0x7fffff)         &brvbar;     0x800000;    
这里同样就不理解了,,只知道m为有效部分,“&”以及     "     &brvbar; "我用AND         和     OR     理解不了,是实现怎样的运算和怎样的运算关系

------解决方案--------------------
&是位运算
由于每一位只能是0或1,所以你只要记住下面的关系就知道怎么算了
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

0xff是16进制的数,表示00000000 00000000 00000000 11111111
0x7fffff表示00000000 01111111 11111111 11111111
0x800000表示00000000 10001111 11111111 11111111