在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

計算機原碼、反碼、補碼的概念

嵌入式那些事 ? 來源:嵌入式那些事 ? 2024-01-09 12:25 ? 次閱讀

在計算機內部數值是以補碼的方式進行存儲的,采用補碼進行數據存儲當然有其優點,下面會一一介紹相關內容,讓各位徹底弄懂原碼、反碼、補碼的概念以及為什么采用補碼作為數據存儲的方式。

注意:下面列舉的例子均是指8位的字節數據。對于16位,32位的數據同樣適用,只是為了書寫方便,8位是最好的選擇啦!

1、無符號數與有符號數

在介紹原碼、反碼和補碼的概念之前,先來了解下無符號數和有符號數。

在計算機系統中,我們可以將數分為兩類:無符號數和有符號數。無符號數的意思是我們不關心這些數的符號,因此也就無所謂正負,反正它們就是數而已,就像小學生一樣,眼中只有自然數。在8位的字節運算中,無符號數的范圍是0000_0000B~1111_1111B,即十進制的0~255。

有符號數是分正負的,而且規定,數的正負要通過它的最高位來辨別。如果最高位是0,它就是正數;如果是1,就是負數。這樣一來,在8位的字節運算環境中,正數的范圍是0000_0000B~0111_1111B,即十進制的0~127;負數的范圍是1000_0000B~1111_1111B,即10進制的-128~-1。也就是說8位的數據,有符號數的范圍是-128~127(對這里的負數有疑問的可以往下面看)。

2、原碼、反碼與補碼

原碼:最高位表示符號位,其余位代表數值大小。如果最高位是0,它就是正數;如果最高位是1,就是負數。例如:十進制數+2,其二進制形式為:0000_0010B;如果是-2,就是1000_0010B。因為最高位是符號位,所以原碼二進制的形式值不等于真正的數值。例如上面的有符號數1000_0010B,其最高位1代表負數,表示的數值為-2,而不是形式值130(1000_0010B轉換成無符號十進制等于130)。

反碼:正數的反碼是其本身;負數的反碼是在原碼的基礎上,符號位不變,其余各數值位取反

補碼:正數的補碼是其本身;負數的補碼是在其原碼的基礎上,符號位不變,其余各數值位取反,最后+1(即負數的補碼是其反碼+1)

下面列舉幾個8位二進制數的原碼、反碼和補碼的編碼形式:

十進制數 原碼 反碼 補碼
42 0010 1010 0010 1010 0010 1010
-42 1010 1010 1101 0101 1101 0110
127 0111 1111 0111 1111 0111 1111
-127 1111 1111 1000 0000 1000 0001

3、補碼存儲數據的優點

在講述原碼、反碼和補碼時,有一個特殊的數值沒有涉及到,那就是0,在我們平時使用中,0是沒有正負之分的,但是不可否認+0 = -0,那么下面列舉下+0,-0的原碼、反碼與補碼的形式:

十進制數 原碼 反碼 補碼
+0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000

為什么-0的反碼1111_1111B進行加1操作求取到的-0補碼是0000_0000B。因為這里假定數據寬度是8位的,1111_1111B加1之后,會逐個向上進位,我們假定有第9位,且值為0,那么0_1111_1111B加1之后,就變成了1_0000_0000B,但是實際上我們要的數據是8位的寬度,這里舍棄第9位,最后結果就變成了0000_0000B。

好了,在講述補碼的優點之前,先看看計算機為什么不使用原碼作為數的存儲格式而采用補碼作為數的存儲格式。

下面說說原碼的優缺點吧。

原碼的優點當然是簡單直觀,例如+2的原碼為:0000_0010B,-2的原碼為:1000_0010B。

原碼的缺點也顯而易見

(1)、+0與-0在原碼中竟然有兩個二進制形式,與我們熟知的+0=-0貌似有出入。

(2)、原碼不能直接參加運算,可能會出錯。例如:1+(-1)=0,而用原碼的二進制形式進行運算為:0000_0001B + 1000_0001B = 1000_0010B,換算成十進制為-2,顯然計算結果錯誤。

那么計算機為什么要使用補碼呢?

首先,根據運算法則減去一個正數等于加上一個負數,即: 1-1 = 1+(-1),所以計算機被設計成只有加法而沒有減法,而讓計算機辨別”符號位”會讓計算機的基礎電路設計變得十分復雜,于是就讓符號位也參與運算,從而產生了反碼。

用反碼計算,出現了”0”這個特殊的數值,0帶符號是沒有任何意義的。而且會有0000_0000B和1000_0000B兩個原碼編碼表示0。于是設計了補碼,負數的補碼就是反碼+1,正數的補碼就是正數本身,從而解決了0的符號以及兩個編碼的問題:用0000_0000B表示0,用1000_0000B表示-128。

注意:-128并沒有原碼和反碼。使用補碼,不僅僅修復了0的符號以及存在兩個編碼的問題,而且還能夠多表示一個最低數值。

如果還不清楚-128怎么來的,那么我就來按我的想法來推出來吧,-127的原碼為:1111_1111B,則其反碼為:1000_0000B,補碼為:1000_0001B,那么自然我們可以想想補碼為1000_0000B代表的就是-128=-127-1=1000_0001B - 1= 1000_0000B。這也就是8位數據最小的負整數了。

這就是為什么8位二進制,使用補碼表示的范圍為[-128,127]

補碼存儲數據的優點

(1)、避免了0的編碼有兩個;

(2)、符號位和有效值位可以一起處理,減法通過加法就可以實現,即簡化了計算機的結構設計也提高了運算速度。

補碼存儲數據的缺點

(1)、不夠簡單直觀。當然這里的不夠簡單直觀是對我們來說的。計算機倒沒什么。

下面給大家推薦一個計算補碼的小工具,那就是我們經常使用的Windows計算器,只要選擇好相應的數據寬度,輸入你的數值,就可以觀察到對應的二進制形式了:

ed7f1056-aea6-11ee-8b88-92fbcf53809c.png

2018-12-25_191046

eda1768c-aea6-11ee-8b88-92fbcf53809c.png

好了,講了這么多,相信大家對原碼、反碼和補碼都有一定的認識了。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7595

    瀏覽量

    89621
  • 原碼
    +關注

    關注

    0

    文章

    3

    瀏覽量

    7180
  • 補碼
    +關注

    關注

    0

    文章

    14

    瀏覽量

    7636
  • 符號
    +關注

    關注

    0

    文章

    55

    瀏覽量

    4493

原文標題:計算機基礎-原碼 反碼 補碼 基礎解析

文章出處:【微信號:嵌入式那些事,微信公眾號:嵌入式那些事】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    原碼補碼反碼、有符號數、無符號數概念.pdf

    原碼補碼反碼、有符號數、無符號數概念.pdf
    發表于 11-15 08:44

    計算機中原碼反碼補碼之間的關系

    首先提幾個概念: 原碼反碼補碼     原碼是什么?      原碼就是早期用來表示數字的一
    發表于 09-17 10:00

    原碼反碼補碼的詳細理解

    `一. 機器數和真值在學習原碼, 反碼補碼之前, 需要先了解機器數和真值的概念.1、機器數一個數在計算機中的二進制表示形式,叫做這個數的機
    發表于 11-16 15:32

    補碼是什么 補碼原碼的轉化

    計算機中的有符號數有三種表示方法,即原碼反碼補碼。三種表示方法均有符號位和數值位兩部分,符號位都是用0表示“正”,用1表示“負”,而數值位,三種表示方法各不相同。在
    發表于 12-11 17:45

    單片機的重要功能/組成

    1. 數制為更好描述和記憶微型計算機的地址,代碼一般采用十六進制.原碼,反碼補碼正數的反碼補碼
    發表于 11-18 08:49

    什么是原碼反碼補碼

    文章目錄1 前言2 什么是原碼反碼補碼2.1 原碼表示法2.2 反碼表示法2.3 補碼表示法
    發表于 12-15 07:00

    計算機原碼反碼及其補碼是干啥的?

      很多人都只知道計算機使用的是二進制,但很少有了解到計算機是以補碼的方式進行存儲數據的。  不過補碼是通過原碼
    發表于 04-13 17:04

    計算機為什么使用補碼的形式來表示負數

    計算機有三種編碼方式來表示同一個數: 原碼:符號位加上真值的絕對值,第一位表示符號,其余位表示值。 反碼:正數的反碼是其本身;負數的反碼
    的頭像 發表于 02-12 15:28 ?9258次閱讀

    計算機原碼反碼補碼到底是什么

    數據在計算機里面都是以0和1存儲和運算的,這是馮諾依曼體系的基礎。
    的頭像 發表于 02-12 16:31 ?1.2w次閱讀

    深入探求反碼補碼

    ! 希望本文對大家學習計算機基礎有所幫助! 一、機器數和真值 在學習原碼反碼補碼之前, 需要先了解機器數和真值的概念。 1、機器數 一
    的頭像 發表于 09-15 15:23 ?1424次閱讀

    計算機為什么要使用補碼

    ,增加了計算的時間,能不能用加法器實現減法器的功能?這個實現的過程就用到了補碼計算機為什么使用補碼?采用補碼可以簡化
    的頭像 發表于 09-12 16:06 ?7967次閱讀

    單片機(STC系列8051內核單片機)

    1. 數制為更好描述和記憶微型計算機的地址,代碼一般采用十六進制.原碼,反碼補碼正數的反碼補碼
    發表于 11-11 12:51 ?1次下載
    單片機(STC系列8051內核單片機)

    【2021-04-05】二進制中的原碼反碼補碼與二進制數的左移右移

    二進制中原碼補碼與左移右移
    發表于 01-12 18:28 ?13次下載
    【2021-04-05】二進制中的<b class='flag-5'>原碼</b><b class='flag-5'>反碼</b><b class='flag-5'>補碼</b>與二進制數的左移右移

    計算機為什么利用反碼來實現減法?

    元器件的限制。當時,計算機的電路設計主要采用位操作(二進制)來實現。為了能夠有效地表示負數,人們引入了反碼概念。使用反碼可以使計算機系統在
    的頭像 發表于 02-19 15:10 ?1216次閱讀

    二進制補碼及與原碼的互相轉換方法

    表示負數。其余位表示數值的大小。 二進制補碼?是一種用于表示有符號整數的二進制編碼方式,常用于?計算機系統中。在補碼系統中,一個數字的補碼是通過對其
    的頭像 發表于 09-19 22:25 ?1003次閱讀
    主站蜘蛛池模板: 四虎永久在线精品免费观看地址 | 欧美成人天天综合天天在线 | 日本亚洲成人 | 99久久久精品免费观看国产 | 亚洲综合婷婷 | 天堂网www在线资源链接 | 国产香港三级理论在线 | 国产伦子系列视频6 | 午夜影院免费版 | 欧美成年网站 | 亚洲视频高清 | 免费福利午夜影视网 | 亚洲h视频 | 久久婷婷丁香七月色综合 | 丁香花免费观看视频 | 色老头久久久久 | 色视频www在线播放国产人成 | 免费精品视频在线 | 欧美色综合高清视频在线 | 黄色网免费 | 在线a人片免费观看不卡 | 一区二区三区无码高清视频 | 永久看片| 4455亚洲| 日本色黄| freesexvideo性大全| 91大神精品全国在线观看 | 色天天综合 | 国语自产自拍秒拍在线视频 | 欧洲亚洲国产精华液 | 最好看的2019中文字幕免费高清 | 91成人在线播放 | 黄色hd | 最色成人网 | 农村妇女色又黄一级毛片卡 | 国产美女视频爽爽爽 | 午夜精品福利在线观看 | 欧美巨大bbbb动漫 | 欧美成人3d动漫在线播放网站 | 久久本道综合色狠狠五月 | 午夜国产精品久久影院 |