2013-09-23 69 views
3

我正在閱讀有關二進制補碼的內容,我知道這種方法效率最高,但也可能有一些缺點。我找不到任何缺點,是否有任何情況下轉換爲補碼可能無法正確表示數字?兩個補充缺點?

+0

我想整個電子世界都依賴2的讚美來表示數字。這是一個充分的證明概念,只要您在可用內存的邊界內工作,它就可以很好地工作。 – gyan

回答

1

補碼很棒 - 這就是爲什麼每個人都使用它。最大的缺點是,如果您試圖否定最低的可表示值,則會發生溢出。用補碼或符號和量值,這不會發生。

+0

難道你不是指「否定最大的可表示數字」嗎? – Tara

+2

@Dudeson:否。例如,在32位二進制補碼中,最低可表示值爲-2^31,而最高可表示值爲2^31-1。最高可表示的值可以被忽略,而否定最低可能值會產生溢出。在C或C++中,這是未定義的行爲;在其他大多數帶有固定寬度signed int的語言中,否定-2^31使其不變。 – user2357112

+0

你說得對。我對此感到抱歉。 – Tara

0

使用「two complement」-notation,您無法將兩個整數的大小與非常簡單的邏輯運算符(在最低級別的硬件上)進行比較。這就是爲什麼浮點運算IEEE標準(IEEE 754)中的指數沒有用「二補」表示,而是用「有偏差」的表示法表示的原因。