「這個位被設置」甚至意味着什麼以及如何確定哪些位被設置,哪些不是。如何確定設置了哪個位?
例如: 如果我有二進制0001 0010 =十進制18 我怎麼知道位1和4被設置?
澄清:在我的頭上,並沒有編碼
「這個位被設置」甚至意味着什麼以及如何確定哪些位被設置,哪些不是。如何確定設置了哪個位?
例如: 如果我有二進制0001 0010 =十進制18 我怎麼知道位1和4被設置?
澄清:在我的頭上,並沒有編碼
你想要做的是從基地10轉換成一個數字,基部2 這裏有一個快速教程做到這一點: http://math.about.com/od/calculuslessons/a/changebase.htm
你的「在我的腦海中,沒有編碼「的澄清,this answer 總結得很好。目前還不清楚是否想知道從二進制數或十進制數中設置哪些位,我將假設後者,因爲看看是否從二進制數設置了一個位是微不足道的。我幾件事情添加到鮑里斯的答案:
一個數目B的位K設置,如果它的值是1,這意味着你需要的2 K個功率添加到您的總和,以得到B.請記住,在二進制表示法中,每個正整數表示爲2的冪的和。沒有2的冪可以表示爲2的較小冪的和,從而使得二進制表示形式是唯一的。
您可以立即知道是否設置了第一位,因爲它定義了奇偶校驗(0-even,1-odd)。
您可以通過查找小於您正在分析的數量的2的最大冪來了解最大的設置位。沒有超過這個數字的位會被設置(如果它們是,那麼它們會比你找到的2的冪更大,從而消除它的最大值)。
從這裏開始,你基本上就像鮑里斯告訴你的那樣。這是一個線性檢查兩個的每個權力。
我想你可能想了解一下this以更好地理解你所要求的。
我正在使用基於減法數字的方法。
你知道2的冪:
2^0 = 1
2^1 = 2
2^2 = 4
2^3 = 8
2^4 = 16
2^5 = 32
2^6 = 64
2^7 = 128
然後把你想要的任何號碼,並嘗試從2的冪的。減去最大,但結果必須大於或等於0。
例子:
可以以2的相應功率進行位與操作。 –