進制轉換之二進制十進制和十六進制

二進制和十六進制對于程序員來說應該是很熟悉的東西了,我也不知道為什么我現(xiàn)在還在看這個呢?^_^
什么是二進制?什么是十六進制?
說到進制我們最熟悉的莫過于十進制了,我們從小學的數(shù)學都是用的十進制。所謂十進制就是逢十進一,從0開始數(shù) 0、1、2、3、.....7、8、9,十個數(shù)了再下一個數(shù)就要進一位變成10(變成了兩位數(shù))。二進制就是逢二進一,0、1再下一個數(shù)就要進一位了變成10(變成兩位數(shù)),十六進制數(shù)的道理也是一樣的,從0開始數(shù),0、1、2、.....7、8、9發(fā)現(xiàn)還沒到十六個數(shù)還不能進一位,所以不能變成10,那怎么辦?數(shù)字不夠用那就用字母來湊,9后面接著數(shù)A、B、C、D、E、F,然后才進一位變成10。
進制間的轉換
人類習慣看十進制的數(shù),看到一長串的二進制數(shù)就一臉懵逼。計算機就只認二進制的數(shù),看到十進制也是一臉懵逼。至于十六進制我想就是為了取個平衡吧(十六進制和二進制的轉換會容易些)。
什么叫進制的轉換呢?比如說二進制中0、1后面的數(shù)是10(不讀作“十”),我們知道在十進制中1后面是2,所以二進制中的10轉換為十進制就是2,反過來十進制中的2轉換為二進制就是10。當然進制間轉換不能靠數(shù)。
先從簡單的二進制轉十六進制說起:比如二進制101010110
如圖所示:將二進制每四位分為一組,不夠四位的前面補0(例子中沒補)。每一組都可以轉換為一個十六進制的數(shù),將這些數(shù)連在一起就是結果,也就是說上面的二進制轉換位十六進制為156。那么每一個組里的二進制要怎么轉為十六進制呢?
從上圖可知0110的值計算為0*8 + 1*4 + 1*2 + 0*1 = 6。如果4位全為1剛好是十六進制的F,這可以解釋為什么是4位劃分為一組了。
十六進制轉二進制剛好是一個相反的過程。將十六進制數(shù)的每一位轉化為一個4位的二進制,然后連起來。
二進制轉十進制的思路第二幅圖的思路是一樣的,只不過不分組就是了。例:
十進制轉二進制就比較麻煩了,要將十進制的數(shù)不斷除2取余數(shù),懶得寫了丟個網(wǎng)上的圖片:
下面是其他網(wǎng)友的補充
1.十進制轉R進制1.1 十進制轉二進制
十進制整數(shù)轉二進制
十進制整數(shù)轉換成二進制采用“除2倒取余”,十進制小數(shù)轉換成二進制小數(shù)采用“乘2取整”。
例題: 135D = ______ B
**解析:**如下圖所示,將135除以2,得余數(shù),直到不能整除,然后再將余數(shù)從下至上倒取。得到結果:1000 0111B.
十進制小數(shù)轉二進制
十進制小數(shù)轉換成二進制小數(shù)采用 “乘2取整,順序排列” 法。
具體做法是:
用2乘十進制小數(shù),可以得到積,將積的整數(shù)部分取出,再用2乘余下的小數(shù) 部分,又得到一個積,再將積的整數(shù)部分取出,如此進行,直到積中的小數(shù)部分為零,或者達到所要求的精度為止。
然后把取出的整數(shù)部分按順序排列起來,先取的整數(shù)作為二進制小數(shù)的高位有效位,后取的整數(shù)作為低位有效位。
例題: 0.68D = ______ B(精確到小數(shù)點后5位)
**解析:**如下圖所示,0.68乘以2,取整,然后再將小數(shù)乘以2,取整,直到達到題目要求精度。得到結果:0.10101B.
1.2 十進制轉八進制
思路和十進制轉二進制一樣,參考如下例題:
例題: 10.68D = ______ Q(精確到小數(shù)點后3位)
**解析:**如下圖所示,整數(shù)部分除以8取余數(shù),直到無法整除。小數(shù)部分0.68乘以8,取整,然后再將小數(shù)乘以8,取整,直到達到題目要求精度。得到結果:12.534Q.
1.3 十進制轉十六進制
思路和十進制轉二進制一樣,參考如下例題:
例題: 25.68D = ______ H(精確到小數(shù)點后3位)
**解析:**如下圖所示,整數(shù)部分除以16取余數(shù),直到無法整除。小數(shù)部分0.68乘以16,取整,然后再將小數(shù)乘以16,取整,直到達到題目要求精度。得到結果:19.ae1H.
# 2.R進制轉十進制## 2.1 二進制轉十進制**方法為:**把二進制數(shù)按權展開、相加即得十進制數(shù)。(具體用法如下圖)
例題: 1001 0110B = ______ D
**解析:**如下圖所示。得到結果:150D.
2.2 八進制轉十進制
八進制轉十進制的方法和二進制轉十進制一樣。
例題: 26Q = ______ D
**解析:**如下圖所示。得到結果:22D.
2.3 十六進制轉十進制
例題: 23daH = ______ D
**解析:**如下圖所示。得到結果:9178D.
3.二進制轉八進制
二進制轉換成八進制的方法是,取三合一法,即從二進制的小數(shù)點為分界點,向左(或向右)每三位取成一位。
例題: 1010 0100B = ____Q
**解析:**計算過程如下圖所示。得到結果:244Q.
4.二進制轉十六進制
二進制轉換成八進制的方法是,取四合一法,即從二進制的小數(shù)點為分界點,向左(或向右)每四位取成一位。
例題: 1010 0100B = ____H
**解析:**計算過程如下圖所示。得到結果:a4H.
5.工欲善其事,必先利其器
下面的表格是8位二進制所對應的十進制數(shù)值,對進制轉換以及類似題目的理解非常有用:
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | B |
---|---|---|---|---|---|---|---|---|
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | D |
注:B:二進制
D:十進制
例題: 135D = ______ B
**解析:**有了上面二進制對應十進制數(shù)值的表格,我們就可以將題目給的十進制135拆分為:128+7,再從表格中找到對應的數(shù)值,拼湊即可得到答案。
135D = 128D + 7D = 1000 0111B
作者:戴翔
電子郵箱:daixiangcn@outlook.com
簡介:中華人民共和國公民,中國共青團員,CSDN博客專家,秦淮區(qū)疾控中心托管社會公益組織指南針工作室志愿者,創(chuàng)業(yè)公司研發(fā)中心負責人,在校大學生。
相關文章
三大網(wǎng)絡管理協(xié)議:SNMP、NETCONF、RESTCONF介紹
本文將詳細介紹三種主要的協(xié)議:SNMP(Simple Network Management Protocol)、NETCONF(Network Configuration Protocol)和RESTCONF,需要的朋友可以參考下2024-02-13- 常見的網(wǎng)絡協(xié)議有:TCP/IP協(xié)議、UDP協(xié)議、HTTP協(xié)議、FTP協(xié)議等,本文就詳細的介紹一下常見的網(wǎng)絡協(xié)議,通過這些具體的協(xié)議更深刻的認識整體網(wǎng)絡的傳輸流程及相關網(wǎng)絡原理,2023-05-30
- 本文主要介紹了L2TP和PPTP的區(qū)別,主要的前區(qū)別在于用途不同、使用要求不同,下面就來介紹一下L2TP和PPTP的聯(lián)系與區(qū)別,感興趣的可以了解一下2023-05-30
自組織網(wǎng)絡Ad Hoc之OLSR 協(xié)議詳解
這篇文章主要介紹了自組織網(wǎng)絡Ad Hoc之OLSR 協(xié)議詳解,需要的朋友可以參考下2023-05-08自組織網(wǎng)絡Ad Hoc之AODV協(xié)議詳解
這篇文章主要介紹了自組織網(wǎng)絡Ad Hoc之AODV協(xié)議詳解,需要的朋友可以參考下2023-05-08自組織網(wǎng)絡Ad Hoc 網(wǎng)絡基礎知識
自組織網(wǎng)絡(Ad Hoc)是一種移動通信和計算機網(wǎng)絡相結合的網(wǎng)絡,是移動計算機網(wǎng)絡的一種,用戶終端可以在網(wǎng)絡內隨意移動而保持通信2023-05-08- 瀏覽器輸入一個URL回車后,會發(fā)生什么呢?這里就為大家分享一下,需要的朋友可以參考下2022-10-19
- 本篇主要是對網(wǎng)絡協(xié)議進行一個歸納總結,方便后續(xù)查閱及復習,當然如有新的認知或新的理解,也會持續(xù)更新2022-10-19
- 今日回顧網(wǎng)絡知識時,發(fā)現(xiàn)自己專門整理過一篇關于日常生活中常見的網(wǎng)絡協(xié)議知識以及作用的梳理,特發(fā)此一貼,也當給自己鞏固網(wǎng)絡知識了,如有錯誤,望各大佬指正2022-10-19
- HTTP即超文本傳輸協(xié)議,是一種實現(xiàn)客戶端和服務器之間通信的響應協(xié)議,它是用作客戶端和服務器之間的請求,需要的朋友可以參考下2022-10-19