作者littleshan (我要加入劍道社!)
看板C_and_CPP
標題Re: [問題] 計算數字的二進制長度
時間Fri Sep 18 09:50:07 2009
以下純屬惡搞,小朋友不要學
unsigned int binary_length(unsigned int i)
{
if(!i) return 0;
union {
float f;
struct {
unsigned int mantissa:23;
unsigned int exp:8;
unsigned int sign:1;
} i;
} u;
u.f = i;
return u.i.exp - 126;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.29.108
1F:推 VictorTom:這個寫法真的是太超過了....>_<# 09/18 10:07
2F:推 VictorTom:等等, 看到l大這個寫法我才注意到我好像寫錯了.... 09/18 10:13
3F:→ VictorTom:輸入0的話, 其實二進位的長度應該是1不是0對吧....Orz 09/18 10:13
4F:→ bleed1979:這個要定義 因為00或000000或0都是代表0 09/18 11:16
5F:推 VictorTom:個人覺得應該就是要用0, 不然001也是1啊....XD 09/18 11:28
6F:推 VictorTom:也可以這樣推, 0~9我們認為是都只有個位; 10~99就有十位 09/18 11:34
7F:→ VictorTom:100~999就有百位; 所以二進位十0與1應該都算長度1吧:) 09/18 11:34
8F:推 johnjohnlin:誰能解釋一下= =? 09/18 20:08
9F:→ VictorTom:這, 小弟說的很難懂嗎Q_Q~ 還是是說解釋l大的XD 09/18 20:50