2013-10-15 50 views
1

取8位十進制的二進制表示形式:0000 1000.使用二進制補碼,通過切換所有位並加1來找到相反的:1111 1000.現在我們有一個-8位十進制的二進制表示形式。區分帶符號的二進制值

但是,我們如何知道是否將這個十進制解釋爲-8或248?

+2

2的補碼意味着您正在使用帶符號的值。 –

回答

1

當有人寫下一個二進制數時,他們通常指定它是有符號還是無符號。如果他們沒有指定任何東西,你可以假定它是無符號的,即在這種情況下是248。

0

符號位,最左邊的位,最重要的位是1,這意味着它是一個負數。

如果你有8位,你只能得到-128到127(這256個不同的值)。所以最高的正數是01111111你不能超過127.所以你就是這麼知道的。

注意 - 即使它不是符號和幅度表示的符號位,最左邊的位仍然稱爲符號位。它擁有除符號之外的價值,但它確實顯示了符號。 wikipedia twos complement
「最重要的位決定數字的符號,有時稱爲符號位。與符號和幅度表示不同,符號位也具有權重..」。

在一個小小的切線上 - 我會加上以下內容,作爲快速填寫2s的簡寫,下面是一個例子,如果您必須將0101置於2s補碼中,則從右邊開始保留第一個1.然後輕彈其餘的。所以把最右邊的1拿起,然後輕彈其餘部分。 0101變爲1011.請注意,與0101的非快捷方式相反,爲1010並加1爲1011相同。而當您有1011時,您可以減去一個,然後取反0101。然後您可以反轉並將1和你會得到0101.你也可以使用相同的技術,在最右側持有第一個1,然後輕彈其餘部分,然後回到0101.這適用於其中的任何一種。 0110以2s爲補碼,在最右邊保持10,在它的左邊輕彈那些,你得到1010.

你可以問,你怎麼知道它是二進制補碼,在你的意義上知道該號碼存儲在什麼數字格式中。無論是2s補碼還是1s補碼。或者標記幅度或浮點數。那麼,你必須知道'因爲你存儲它!你不能存儲數據,也不能記住數據的含義!

相關問題