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) ¦ 0x800000;
这里同样就不理解了,,只知道m为有效部分,“&”以及 " ¦ "我用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