2013-02-10 174 views
1

如果你有一個二進制數表示1010(10爲10),是否說除以2將除去第一個數字(使其最終爲010)是真的?從二進制數中刪除第一個數字的含義?

基本上你是如何刪除第一位數字的(即如果二進制數字是0或1,那麼它最終會成爲無)?我不想要代碼或任何東西,我只是想知道像你一樣分裂或乘以二。

也不要考慮任何二進制數的最左邊的零。

+0

除以2將刪除最低有效位,或從右向左計數的第一個數字。可以通過右移輕鬆實現'''' – nhahtdh 2013-02-10 07:41:16

回答

2

它的工作原理與基準十相同。沒有第一個數字的401號碼是1.你減去了400,不是?現在,除以十,你會把數字右移。 401向右移動的是040. 401/10 = 40.請注意,因爲我們正在進行整數除法,所以丟棄了1。

因此,在二進制中,它是完全一樣的,但功率爲2.刪除第一位不是DIVIDE兩位。它減少了其位置的價值。所以101b(它是4 + 1 = 5),沒有它的最大位,是001b或1個小數。這是減法:5 - 4 = 1.

除以2,將位移到右側,就像在基數10中一樣。所以101b將變爲010b,這是2位小數。 5/2 == 2(我們正在刪除小數部分,因爲它是整數除法)

有意義嗎?如果你對二進制感到困惑,只要考慮數字的位數如何以10爲基數工作,而不是10的冪,則使用2的冪。

-1

刪除一個數字是喜歡它改爲0更改1010到0010減去1000完成:1010 - 如果「第一個數字」 1000 = 0010

+0

從1010中減去1000得到10並不總是顯而易見的。你怎麼知道它是1000,而不是10000或100? aaaaaa123456789的回答解決了這個問題。 – nhahtdh 2013-02-10 07:59:03

1

你的意思是「第一顯著數字」,那麼是什麼你正在尋找的是類似於number and not (1 shl (int(log number/log 2))),其中andnot是按位運算,shl表示左移,int向下舍入(從不上移)爲整數。 log只是一個對數,在任何基數(兩種情況下都是相同的基數)。

如果用「第一個數字」表示第n個位置的數字(讓最右邊的位置爲0,向左計數),那麼您只需執行number and not (1 shl position)