計算機原理及基礎 有符號型別和無符號型別

2021-09-06 20:17:37 字數 2107 閱讀 6255

如果這個量不會有負值,那麼我們可以使用無正負的型別。

分正負的型別,稱為有符號型別;無正負的型別(只有正值),稱為無符號型別。

(紅色為最高位)

單位元組數: 1111 1111

雙位元組數:1111 1111 1111 1111

四位元組數:1111 1111 1111 1111 1111 1111 1111 1111

當乙個數是無符號型別時,那麼其最高位的1或0,和其它位一樣,用來表示該數的大小。

當乙個數是有符號型別時,最高數稱為「符號位」。為1時,表示該數為負值,為0時表示為正值。

無符號型別中,所有的位都用於直接表示該值的大小。我們舉乙個位元組的數值對比:

無符號型別: 1111 1111   值:255        1* 27 + 1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

有符號型別: 0111 1111   值:127                    1* 26 + 1* 25 + 1* 24 + 1* 23 + 1* 22 + 1* 21 + 1* 20

同樣是乙個位元組,無符號型別的最大值是255,而有符號型別的最大值是127。原因是有符號型別中的最高位被挪去表示符號了。

有符號型別的長處是它可以表示負數。雖然它的在最大值縮水了,卻在負值的方向出現了伸展。我們仍用乙個位元組的數值對比:

無符號型別:                            0 -----------------------------255

有符號型別:        -128 --------- 0 ---------- 127

二者能表達的數值的個數都是256個。無符號型別表達的是 0~255 這256個數,有符號型別表達的是 -128 ~ 127這256個數。

有符號型別的負數使用補碼表示。

有 int 型別的數,值為5,那麼,我們知道它在計算機中表示為:

00000000 00000000 00000000 00000101

如果是 -5,在計算機中如何表示?負數以補碼表達。

(1)原碼:乙個整數,按照絕對值轉換成的二進位制數,稱為原碼。

比如 00000000 00000000 00000000 00000101 是5和-5 的原碼。

(2)反碼:原碼按位取反,就是反碼。

取反操作指:1變0; 0變1

00000101每一位取反,得11111010。

(3)補碼:補碼=反碼+1。

00000101 的反碼是:11111010。

補碼 = 11111010 + 1 = 11111011

-5在計算機中表達為:11111011。轉換為十六進製制:0xfb。

我們來看int型整數-1在計算機中如何表示:

1、先得原碼:  00000001

2、得反碼:     11111110

3、得補碼:     11111111

-1在計算機裡用二進位制表達就是全1。16進製為:0xff。

***********************************=參考****************************************=

二進位制值(1位元組)    十進位制值

1000 0000    -128

1000 0001    -127

1000 0010    -126

1000 0011    -125

...    ...

1111 1110    -2

1111 1111    -1

-1是最大的負整數。

1111 1111 - 1 = 1111 1110,而1111 1110就是-2。

這樣一直減下去,當減到只剩最高位用於表示符號的1以外,其它低位全為0時,就是最小的負值了,最小的負值是1000 0000,也就是-128。

位元組數    二進位制值    十進位制值

單位元組數    1111 1111    -1

雙位元組數    1111 1111 1111 1111    -1

四位元組數   1111 1111 1111 1111 1111 1111 1111 1111    -1

計算機組成原理學習筆記(2) 無符號數和有符號數

第一篇學習了計算機組成原理的核心,馮諾依曼結構。由於確實沒學好,就不從頭開始學了。這一篇開始學習計算機的運算方法。首先來學習無符號數和有符號數。基本就是學習基本概念,然後提出問題,解決問題這樣的學習節奏。什麼是無符號數?就是沒有符號位的數,機器字長為16位時,表示範圍是0 65535。什麼是有符號數...

計算機中的有符號數和無符號數

1.概念 在計算機中,可以區分正負型別的數,成為 有符號數 signed 無正負型別的數 只有整數型別 成為 無符號數 unsigned 簡明的說,無符號說就是其所有的位數都用來表示數值的大小,有符號數除最高位來表示數值的正負外 0表示正數 1表示負數 其餘各位用來表示數值的大小。舉個例子說明一下 ...

有符號數和無符號數在計算機中怎麼區分?

確如題主所說,計算機中儲存的任何資料都是二進位制形式,單看資料是無法認定其格式和內容的。計算機要用二進位制編碼來表達數值的符號,最直觀的方法就是符號位。但為了保證基本算術運算在正負數上的一致性,x86計算機對負數採用了特殊的編碼方式,即補碼。為什麼補碼這麼巧妙實現了正負數的加減運算?參見維基百科 補...