為什麼要使用補碼

2021-08-14 07:09:45 字數 851 閱讀 4831

想必對於原碼,反碼,補碼大家並不陌生,計算機專業的同學都會學到這方面的一些知識。

當初在學這部分的時候,只知道用補碼可以解決0和-0的問題,但是還是沒明白為什麼會想到用補碼。

前陣子看了史丹福大學關於正規化程式設計的公開課,裡面老師講了這方面的內容,三言兩語給出了乙個簡單明瞭的解釋,頓時覺得好棒!

思路如下:

我們主要要解決的問題就是負數的表示,而眾所周知,絕對值相等的兩個正負數之和為0。

假設我們有正數 0000 0000 0000 1111,我們如何表示其相反數呢?一般我們的思路是,找乙個數,跟它相加的結果等於0,但是我們發現,要找出乙個與它相加後結果等於0的數還是要略加思考一下的(因為要計算進製),所以,為何不找出乙個與它相加後結果是1111 1111 1111 1111的數,然後該數+1即是我們所要的答案啦。

於是,很容易的, 0000 0000 0000 1111 + 1111 1111 1111 0000 + 1 = 1111 1111 1111 1111 + 1 = (1)0000 0000 0000 0000

一目了然,1111 1111 1111 0001 就是我們想要的答案了,那麼我們是怎麼得到這個相反數的呢?

首先,找出乙個數與它加起來結果是全1的,這個數便是它的反碼,然後這個數再加1,這便是它的相反數了,也是我們說的補碼。

我們檢驗一下0的情況,0000 + 1111 + 1 =(1)0000,其中1111 + 1 = (1)0000 = 0000,即+0和-0的二進位制表示均為0000。

補碼是人創造出來了的,由於用了補碼之後求相反數變的簡單了,所以就創造了這樣一種方法,把這種方法求出來的結果命名為補碼

原碼  

反碼   0變為1,1變為0

補碼   反碼加1.

為什麼要使用原碼 反碼 補碼

前言 隨著學習計算機知識的加深,許多地方都遇到原碼 反碼 補碼。很多關於計算機的書籍都介紹原碼 反碼 補碼的表示方法,但是為什麼要用到原碼 反碼 補碼卻沒詳細說。為什麼要使用?它們的原理是什麼呢?我搜尋了許多資料,也查詢了許多書籍,終於弄明白了這個問題,收集整理如下。我們知道數值在計算機中表示形式為...

為什麼要使用原碼 反碼 補碼和移碼

上篇部落格簡單的介紹了計算機中原碼 反碼 補碼和移碼的表示方式 對於計算機為什麼要這樣還不是很明白,就好像知道這樣乙個東西,卻不知道為什麼要這樣。就好像乙個人你不了解他不是他的朋友,他的有些事情你就不知道他是為了什麼 其實從原碼到補碼是乙個層層遞進的關係,也是乙個在錯誤中逐步發展的過程。也就是說利用...

為什麼要使用補碼?我是這麼理解的

十進位制轉二進位制補碼 原碼,抑或是反過來二進位制補碼 原碼轉十進位制,都擁有一套轉化的規則,且較為簡便。但是,計算機為什麼要有補碼出現?原碼 反碼不行嗎?疑惑.站在人的角度 十進位制 以1 2 3為例,在計算機中如果這些常量以原碼或反碼儲存在計算機中,假定占用乙個位元組。則 若採用原碼 1在儲存單...