2017-01-22 92 views
0

我想知道是否有辦法查找給定十進制數的最後一位。我想手工計算這個。如何查找給定十進制數的最後一位(二進制)

例如,如果我有133和255我如何才能找到最後兩位二進制,不屢除以2?

+0

「最後位」是什麼意思 - 最重要還是最不重要? – MBo

+0

我的意思是至少顯著位[我需要位操作求助] – tzoella

+0

可能的複製(http://stackoverflow.com/questions/16549303/i-need-help-on-bit-twiddling) –

回答

1

這裏是要找到一個十進制數的兩個最低顯著位,適合於你的頭做一個簡單的方法。

你只需要最後兩位數字,所以扔掉(精神上)休息。你的例子是33和55.看最後的十進制數字:如果它是奇數,最不重要的數字是1;如果是偶數,至少顯著數字是0。在你的例子,最後的數字是3和5,所以它們都具有一個二進制數字1

如果我們在最後一步得到的二進制數字爲1 ,從數字中減去1。所以你的例子現在是32和54.現在我們看看這兩個最後的十進制數字。如果最後一位十進制數字可以被4整除(即它是0,4或8),倒數第二位數字是偶數,則倒數第二位數字是0.如果最後一位數字不是可以被4整除(即它是2或6),倒數第二位數字是奇數,倒數第二位數字是0.否則,倒數第二位數字是1.在你的第一位例如,我們現在有32個,最後一個十進制數字是2​​,不是在第一個列表中,而是在第二個,而倒數第二個十進制數字是奇數,所以倒數第二個二進制數字是0。你的第二個例子,我們現在有54個,最後一個十進制數字是4,在第一個列表中,倒數第二個十進制數字是奇數,所以倒數第二個二進制數字是1.因此,133結束01以二進制表示,而255以11以二進制結束。

如果你不喜歡最後一個規則,您可以採用不同表達出來。如果該步驟中的兩位數字可以被4整除,則倒數第二位數字爲0,否則爲1.在您的示例中,32可以被4整除,因此我們得到0位,但是54不是可以被4整除,所以我們得到1位。結果是一樣的,但第二種方法需要您似乎想要避免的分割,而第一種方法避免了分割,但需要更多的內存工作。

相關問題