作者chrisjon (與程式最後的決戰)
看板C_and_CPP
標題[問題] 計算數字的二進制長度
時間Thu Sep 17 12:54:24 2009
請問有直接計算二進制長度的語法嗎?
例如:12(10) = 1100(2)
那長度就是 4
我是有想說寫a|(2^31-1),然後再&1計算1有幾個就是它的長度
不過,是否有直接的語法可以用呢?
--
周瑜你好:
我們是荊州水軍統領的蔡瑁和張允,曹操帶領北方八十三萬大軍南下
我們假裝投降,過幾天,我們就會把他的人頭砍下來 送給你,敬請笑納
最後敬祝
閤府平安 健康快樂 金榜提名 早日康復
MerryChristmas & Happy New Year 本期大樂透名牌 1 2 3 4 5 6
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.137.179
1F:推 stool100:LOG以2為底 ... 09/17 13:00
2F:→ stool100:取整數 然後+1 09/17 13:01
3F:推 stool100:取整數請用int 09/17 13:03
4F:→ chrisjon:感謝^^ 09/17 17:40
5F:推 jaw109:可以試試bitset XD 09/17 18:02
6F:推 suhorng:一般都O(lgn)來算 不過 x86 系列有 BSF, BSR 指令~ 09/17 19:57
7F:→ suhorng:不過我覺得 a|(2^31-1) 怪怪的? 首先^是 xor 不是指數,再 09/17 19:58
8F:→ suhorng:來為什麼這樣可以計算有幾個 1? 好像跟長度沒什麼關聯 ... 09/17 19:59
9F:→ suhorng:其實不用內建函式的話直接 /2, /2, /2... 算就好了 09/17 19:59
10F:推 VictorTom:>> 1 :) 09/17 20:19
11F:推 hilorrk:根本直接印出bits就好了吧XD 09/17 21:46
12F:→ MOONRAKER:那是因為你知道 ^ 是xor,可是一般總把他當成power用 09/17 21:56
13F:推 freelancer:如果用有support posix 的library 在 strings.h 裡有 09/18 00:46
14F:→ freelancer:ffs 可以用 09/18 00:46
15F:→ chrisjon:寫Maple習慣了,2的31次方就是2^31,它會自動轉換=v=" 09/18 05:09