# 2019q3: 回顧 Homework [_3_](https://hackmd.io/@sysprog/BJCG-HGdS) / [_4_](https://hackmd.io/@sysprog/Bkb5cDMuH)
- [ ] jserv
* 檢討事項 :
* 補充資訊 :
---
```cpp
float_bits float_i2f (int i){
if(i == 0)
return 0;
int sign = (i >> 31)<<31;
int exp = bits_length(i&0x7fffffff) - 1;
int frac = bits_mask(exp) & i;
return (sign | ((exp + 127) << 23)) | frac;
}
```
contributed < `Benny1117Yen` >
上述修改 ```int frac = (bits_mask(exp) & i) << (23 - E)```
表示還要左移 `23 - E` 來將 `frac` 補到 `23` bits。
不過還可以增加一些條件,
[參考](https://github.com/DreamAndDead/CSAPP-3e-Solutions/blob/master/chapter2/code/floats/float-i2f.c)這份,改寫在底下連結
https://hackmd.io/@P86071244/Quiz7#%E6%B8%AC%E9%A9%97-2