原碼補碼反碼
主要內(nèi)容
數(shù)據(jù)的常見分類
機器數(shù)和機器數(shù)的真值
原碼
補碼
-
反碼
數(shù)據(jù)的常見分類
[圖片上傳失敗...(image-c62944-1590502847961)]
機器數(shù)和機器數(shù)的真值
在計算機中所有的數(shù)據(jù)都是以二進制保存的泳叠;
+3=0000 0011
-3=1000 0011
在機器數(shù)中,使用最高位來表示數(shù)字的正負危纫;1為負,0為正契耿;
一個字長為8位螃征;
機器數(shù)的真值就是機器數(shù)對應(yīng)的真正的數(shù)值
如: 1000 1101= —13;
0000 0011=3;
原碼
首先確定一個數(shù)的正負,如果是正數(shù)盯滚,首位用0表示,如果是負數(shù)裸燎,首位用1表示泼疑;
有效位:真值的絕對值轉(zhuǎn)化為二進制形式;
將符號位和有效位拼接到一起退渗;
+6=0000 0110;
-5=1000 0101;
+35=0010 0011;
-27=1001 1011;
反碼
正數(shù):正數(shù)的反碼和原碼相同;+3 0000 0011[原]=0000 0011[反]
負數(shù):<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">符號位不變</mark>个粱,其余各位直接取反翻翩,二進制只有兩種狀態(tài),1變0, 0變1嫂冻;
補碼
正數(shù):正數(shù)的原碼反碼補碼全部相同;+3 0000 0011[原碼]=0000 0011[反碼]=0000 0011[補碼]
負數(shù):先求原碼睛低,再求反碼,反碼最后一位加1:
為什么需要反碼和補碼
反碼:在設(shè)計計算機的時候致設(shè)計了加法器钱雷,<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">沒有減法器</mark>,使用加法計算來表示減法拉庵;
補碼:反碼解決了沒有減法器的問題,但是會出現(xiàn)正負相加名段,<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">0的表示不唯一</mark>泣懊,使用補碼進行修正
使用補碼計算以下算式
36+28
0010 0100
0001 1100
0100 0000 [64]
補碼轉(zhuǎn)原碼
正數(shù):補碼=反碼=原碼
負數(shù):補碼的補碼:首位不變馍刮,其余取反,最后一位再加1
反碼轉(zhuǎn)原碼
正數(shù):原碼=反碼=補碼
負數(shù):符號位不變卡啰,其他位取反