我有一個存儲160位數的20個字/字節的數組。我怎樣才能找到從msb開始的第一個非零位。我需要找到位的位置,然後相應地從第一個'1'位置進行一些操作。如何找到從msb開始的第一個非零位
0
A
回答
0
可以遍歷每個字節,直到找到第一個就是!= 0。這是等於零的每個字節,增加由8
計數器然後用字節,做右移位操作(>> 1),直到該值等於零。在每個班次,增加1。
5
前面的櫃檯如果你使用gcc,還有內置函數正是(和許多其他的東西)做
http://gcc.gnu.org/onlinedocs/gcc-4.5.4/gcc/Other-Builtins.html
你正在尋找的一個因爲可能是__builtin_clz
(用於unsigned int),__builtin_clzl
(用於unsigned long)或__builtin_clzll
用於unsigned long long。
從文檔:
返回引領X 0位,從最高顯著位位置的數量。如果x爲0,結果是undefined
因此,從最重要的角度來看你的整數(longs?longlongs?),直到找到第一個不爲零的第一個整數。然後使用合適的__builtin_clz
來找出它有多少前導零,以及32(64)減去該數字是數字中最高位1
的位置!
當然,你總是可以實現__builtin_clz
自己,如果你想與其它編譯器兼容的(如你應該!)
相關問題
- 1. 如何獲得從MSB開始的特定位置的位值?
- 2. 從非零時間開始一個CAKeyframeAnimation
- 3. 如何找到最高有效位(MSB)
- 4. 如何找到的第一個字符的SQL Server 2008開始
- 5. 以第一個非零值開始,但在第一個之後包括全零的平均公式
- 6. 從右邊的一個單詞中找到第一個零位(LSB)
- 7. 如何在列中查找第一個非零值?
- 8. 非特權執行從零開始
- 9. 在熊貓系列中找到第一個非零值
- 10. 從零開始
- 11. 從零開始創建一個LinkedList類
- 12. 如何在Android上創建位反轉(從MSB-> LSB到LSB-> MSB)?
- 13. 如何建立一個基本的終端從零開始
- 14. 從第一天的第一天開始查找季度
- 15. 從零開始創建一個查找表
- 16. 的R - 查找第一個非零元素的指標在data.table
- 17. 只找到第一個字從一個特殊字符開始java
- 18. 子字符串sql nvarchar從開始到第一個非int字符的值
- 19. MVC從零開始
- 20. C++從零開始
- 21. RDF從零開始
- 22. 查找從字符串末尾開始的第一個結果
- 23. 如何在SQL Server 2012的列中查找第一個非零值的行號
- 24. python查找小數點後的第一個非零數字
- 25. 如何從零計數器verilog開始
- 26. 如何從零開始創建模型
- 27. Android:片段和ViewPager總是從第一個位置開始
- 28. PHP找到的第一個科學地顯著「非零」的浮點數
- 29. double:從零開始的roundaway
- 30. 從零開始的Modx idx
我們展示你的代碼。 – Rohan
[This](http://stackoverflow.com/questions/671815/what-is-the-fastest-most-efficient-way-to-find-the-highest-set-bit-msb-in-an-i ?rq = 1)可能會有所幫助 – rath
[查找位數組中設置的最高有效位(最左側)]的可能重複(http://stackoverflow.com/questions/2589096/find-most-significant-bit -left最 - 即-IS-設置在所述位陣列) – SomeWittyUsername