2010-03-04 153 views
1

我正在閱讀一些彙編教程,其中解釋了帶符號整數和無符號整數以及它們在計算機內存中的表示之間的差異。unsigned int/long如何表示

我記得有些事情在開頭有一些數字,所以它告訴整數是無符號還是有符號。

如果有人知道它,請回答。

+0

http://en.wikipedia.org/wiki/Signed_number_representations – Tim 2010-03-04 18:24:57

回答

2

有符號數的許多可能的表示,最常見的是two's complement.

+0

但是這不完全是我想讀的...... 它們在計算機內存中的表現如何?機器(或編譯器)如何知道int是有符號還是無符號?等等。 – VaioIsBorn 2010-03-04 18:24:23

+1

機器不知道 - 這就是爲什麼你必須告訴編譯器如何處理它。在內存中,它只是表示爲特定的位數,可以是任何... – 2010-03-04 18:25:40

+0

它是相關的,因爲二進制補碼足夠複雜,允許許多操作同等地使用無符號和有符號數據,例如加法。 – 2010-03-04 18:26:49

2

MSB不確定數字是否被簽名;以有符號數字表示該數字是否爲負數。在無符號數字中,它只是MSB。這是確定一個數字是否被認爲是有符號或無符號的程序。

1

他他。棘手的問題。有符號和無符號整數表示完全相同。看着你的記憶你將永遠無法區分它們。它出自馮諾依曼原理之一。那麼區別在哪裏?差異在於它們被解釋的方式。如果變量被簽名,則編譯器使用命令進行簽名。此外,如果我們知道該號碼已簽名,它的第一位告訴我們它是符號。在兩種方式下,轉換完成爲~i + 1(c語法)

0

有很多可能的表示形式,每種表示形式都取決於您的computer's organization。最有名的是

在兩種表示法,可以測試第一(最顯著)位找出數是正數(通常關閉)或陰性(位)。也就是說,如果您將號碼視爲簽署。如果您告訴編譯器將這些數字視爲無符號數,則符號位將用作數據(這會使數據類型的最大值爲range加倍)。

相關問題