python十進制正數(shù)、負數(shù)、小數(shù)和二進制互相轉換

二進制數(shù)轉十進制數(shù)

整數(shù)二進制用數(shù)值乘以2的冪次依次相加,小數(shù)二進制用數(shù)值乘以2的負冪次然后依次相加!

二進制正數(shù)轉換為十進制:

以110為例,首先補齊位數(shù),00000110,首位為0,則為正整數(shù),那么將二進制中的三位數(shù)分別于下邊對應的值相乘后相加得到的值為換算為十進制的結果

二進制轉十進制.jpg

二進制負數(shù)轉換為十進制:

如果二進制數(shù)補足位數(shù)之后首位為1,那么其對應的整數(shù)為負,那么需要先取反然后再換算
比如11111001,首位為1,那么需要先對其取反,即:-00000110
00000110,對應的十進制為6,因此11111001對應的十進制即為-6
換算公式可表示為:
11111001=-00000110=-6

二進制小數(shù)轉換為十進制

如果將二進制0.110轉換為十進制:
將二進制中的三位數(shù)分別于下邊對應的值相乘后相加得到的值為換算為十進制的結果


二進制轉十進制-小數(shù).jpg

十進制數(shù)轉二進制數(shù)

十進制正數(shù)轉二進制:

要點:除二取余,倒序排列
解釋:將一個十進制數(shù)除以二,得到的商再除以二,依此類推直到商等于一或零時為止,倒取將除得的余數(shù),即換算為二進制數(shù)的結果
例如把52換算成二進制數(shù),計算結果如圖:

十進制正數(shù)轉二進制.gif

52除以2得到的余數(shù)依次為:0、0、1、0、1、1,倒序排列,所以52對應的二進制數(shù)就是110100。
由于計算機內(nèi)部表示數(shù)的字節(jié)單位都是定長的,以2的冪次展開,或者8位,或者16位,或者32位....。
于是,一個二進制數(shù)用計算機表示時,位數(shù)不足2的冪次時,高位上要補足若干個0。本文都以8位為例。那么:
(52)_{10}=(00110100)_2

十進制負整數(shù)轉二進制

要點:取反加一
解釋:將該負整數(shù)對應的正整數(shù)先轉換成二進制,然后對其“取補”,再對取補后的結果加1即可
例如要把-52換算成二進制:

  1. 先取得52的二進制:00110100
  2. 對所得到的二進制數(shù)取反:11001011
  3. 將取反后的數(shù)值加一即可:11001100
    即:
    (-52)_{10}=(11001100)_2
十進制小數(shù)轉二進制

要點:乘二取整,正序排列
解釋:對被轉換的小數(shù)乘以2,取其整數(shù)部分(0或1)作為二進制小數(shù)部分,取其小數(shù)部分,再乘以2,又取其整數(shù)部分作為二進制小數(shù)部分,然后取小數(shù)部分,再乘以2,直到小數(shù)部分為0或者已經(jīng)取到了足夠位數(shù)。每次取的整數(shù)部分,按先后次序排列,就構成了二進制小數(shù)的序列
例如把0.2轉換為二進制,轉換過程如圖:

十進制小數(shù)轉二進制.gif

0.2乘以2,取整后小數(shù)部分再乘以2,運算4次后得到的整數(shù)部分依次為0、0、1、1,結果又變成了0.2,
若果0.2再乘以2后會循環(huán)剛開始的4次運算,所以0.2轉換二進制后將是0011的循環(huán),即:
(0.2)_{10}=(0.0011 0011 0011 .....)_2

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容