負數在計算機中怎樣儲存

2021-09-11 07:47:56 字數 1233 閱讀 9219

一、什麼是原碼、反碼、補碼?

分為:正數 和負數(包括正浮點數,和負浮點數)

規定最高位位符號位正數為0,負數為1(原因下文解釋)

原碼:10進製轉換成2進製是原碼,只不過正數的原碼是本身符號位為0,負數的原碼符號位為1(以下篇幅均以單位元組為例:10進製1的原碼是0000 0001,10進製-1的原碼是1000 0001)。

反碼: 正數的反碼是本身,負數的反碼是負數的原碼0變為1,1變為0   (-1的原碼是1000 0001   它的反碼就是 1111 1110,)。(注意負數求反碼時候的符號位不參與變換)。

補碼: 正數的補碼是本身,負數的反碼就是負數的反碼加一 (-1的原碼是1000 0001   它的反碼就是 1111 1110  它的補碼就是 1111 1111)。

總結:正數的原碼,反碼 ,補碼三值合一, 負數的原碼,反碼,補碼不同。

二:為什麼要設定反碼,補碼?

有人會有疑惑為什麼要用反碼,補碼,不直接用原碼呢?先搞清楚一點反碼補碼原碼是針對二進位制數而言,計算機若用原碼相加減,正數加正數不會出錯,然而正數和負數原碼相加就會出錯。

引進補碼的作用是為了讓計算機更方便做減法 

說白了,補碼反碼就是為了簡化減法而來的,將減號化為負數 再將負數化為補碼求加法 跟正數沒關係 ,不管是正整數還是正小數,原碼,反碼,補碼都全部相同。

三:visual studio2013 檢視儲存;

事實證明計算機中負數是以補碼儲存的,也可以推廣到,計算機中所有數都是以補碼形式儲存的。

四:剖析本質:

1.單位元組無符號的正數可以儲存的範圍就是 0~256 二進位制表示( 0000 0000~1111 1111)

2.單位元組有負號的整數可以儲存的範圍是-128 ~127 。

先看正數二進位制能表示範圍(0 000 0001 ~ 0 111 1111)即1~127

負數二進位制能能表示的範圍(1 000  0001 ~ 1 111 1111)即-127~-1

所還有個0 分為+0和-0 (0000 0000 表示+0,1000 0000 表示-0 表示-128)

負數在計算機中怎樣儲存

一 什麼是原碼 反碼 補碼?分為 正數 和負數 包括正浮點數,和負浮點數 規定最高位位符號位正數為0,負數為1 原因下文解釋 原碼 10進製轉換成2進製是原碼,只不過正數的原碼是本身符號位為0,負數的原碼符號位為1 以下篇幅均以單位元組為例 10進製1的原碼是0000 0001,10進製 1的原碼是...

負數在計算機中的儲存

問乙個基本的問題。負數在計算機中如何表示?舉例來說,8在計算機中表示為二進位制的1000,那麼 8怎麼表示呢?很容易想到,可以將乙個二進位制位 bit 專門規定為符號位,它等於0時就表示正數,等於1時就表示負數。比如,在8位機中,規定每個位元組的最高位為符號位。那麼,8就是00001000,而 8則...

負數在計算機中的表示

今天,老大讓我調查乙個浮點數轉換為整數的問題。自己就查了些資料,順便複習一下原碼 反碼和補碼。原碼 將乙個整數,轉換成二進位制,就是其原碼。如單位元組的5的原碼為 0000 0101 5的原碼為1000 0101。反碼 正數的反碼就是其原碼 負數的反碼是將原碼中,除符號位以外,每一位取反。如單位元組...