在講進制之間的轉換以前,先引入幾個概念:原碼、反碼、補碼。在計算正數的時候原碼=反碼=補碼,因此我認爲只要在計算負數時反碼和補碼的概念纔有真正的意義。計算機中二進制的計算均是用補碼計算的,咱們平時所說的二進制一般也是補碼,須要注意二進制首位字符爲符號位。如下是對這些概念的理解spa
原碼:一個整數,轉換成二進制數,稱爲原碼;blog
如:①有一個整數,其數值爲9,轉換成二進制獲得00001001,則其中原碼爲00001001;
遞歸
②有一個整數,其數值爲-9,轉換成二進制獲得10001001,則其中原碼爲10001001;二進制
反碼:將原碼按位取反,獲得的新的二進制數,稱爲反碼;im
如:①正數的反碼等於原碼,則數值9的反碼爲00001001。margin
②將10001001符號位不變,其餘數值按位取反,獲得新的二進制數11110110,即爲其反碼,則數值-9的反碼爲11110110img
補碼:反碼加1,獲得的二進制數,稱爲補碼;計算機
如:①正數的補碼等於原碼,則數值9的補碼爲00001001。co
②二進制數值11110110加1,獲得11110111,即爲其補碼,則數值-9的補碼爲11110110字符
1、十進制轉二進制
一、數值爲正數時;
用該正數,遞歸除2,直到商等於0中止,倒序取餘數,高位不足補0;
以十進制55爲例:
最終獲得的二進制數爲 11 0111 ,高位補0最終獲得 0011 0111;
二、數值爲負數時;
以十進制-55爲例:
① 取得該數值的絕對值爲55,原碼爲0011 0111,則-55的原碼 = -0011 0111 = 1011 0111
② 取 1011 0111 反碼獲得 1100 1000
③ 取 1100 1000 補碼獲得 1100 1001
則-55轉換成的二進制數值爲 1100 1001
2、二進制轉十進制
二進制數首位字符爲符號位,0表示正,1表示負
一、二進制數值首位爲0
二進制數值位數從後往前,依次計算第n位上數字乘以2的n-1次冪,所獲得的和即爲十進制數字;
以 0011 0111 爲例:
1*2^0 + 1*2^1 + 1*2^2 + 0*2^3 + 1*2^4 + 1*2^5 = 1 + 2 + 4 + 16 + 32 = 55
則最終的結果是55
二、二進制數值首位爲1
二進制首位爲1則表示次二進制數值爲負數,根據十進制轉二進制的規則逆推便可;
以 1100 1001 爲例:
① 1100 1001 減1 獲得 1100 1000
② 取1100 1000 反碼獲得 1011 0111
③ 將1011 0111 轉化成十進制爲-55
則最終獲得結果爲 -55