數制的概念 數制是人們利用符號進行計數的科學方法。數制有很多種,在計算機中常用的數制有:十進制,二進制和十六進制。
數制也稱計數制,是指用一組固定的符號和統一的規則來表示數值的方法。計算機是信息處理的工具,任何信息必須轉換成二進制形式數據后才能由計算機進行處理,存儲和傳輸。
人們通常使用的是十進制。它的特點有兩個:有0,1,2….9十個基本數字組成,十進制數運算是按“逢十進一”的規則進行的.
在計算機中,除了十進制數外,經常使用的數制還有二進制數和十六進制數.在運算中它們分別遵循的是逢二進一和逢十六進一的法則.
二進制數有兩個特點:它由兩個基本數字0,1組成,二進制數運算規律是逢二進一。
為區別于其它進制數,二進制數的書寫通常在數的右下方注上基數2,或加后面加B表示。
例如:二進制數10110011可以寫成(10110011)2,或寫成10110011B,對于十進制數可以不加注.計算機中的數據均采用二進制數表示,這是因為二進制數具有以下特點:
1) 二進制數中只有兩個字符0和1,表示具有兩個不同穩定狀態的元器件。例如,電路中有,無電流,有電流用1表示,無電流用0表示。類似的還比如電路中電壓的高,低,晶體管的導通和截止等。
2) 二進制數運算簡單,大大簡化了計算中運算部件的結構。
二進制數的加法和乘法運算如下:
0+0=0 0+1=1+0=1 1+1=10
0×0=0 0×1=1×0=0 1×1=1
由于二進制數據的基R較小,所以二進制數據的書寫和閱讀不方便,為此,在小型機中引入了八進制。八進制的基R=8=2^3,有數碼0、1、2、3、4、5、6、7,并且每個數碼正好對應三位二進制數,所以八進制能很好地反映二進制。八進制用下標8或數據后面加Q表示 例如:二進制數據 ( 11 101 010 . 010 110 100 )2 對應 八進制數據 ( 3 5 2 . 2 6 4 )8或352.264Q.
由于二進制數在使用中位數太長,不容易記憶,所以又提出了十六進制數
十六進制數有兩個基本特點:它由十六個字符0~9以及A,B,C,D,E,F組成(它們分別表示十進制數10~15),十六進制數運算規律是逢十六進一,即基R=16=2^4,通常在表示時用尾部標志H或下標16以示區別。
例如:十六進制數4AC8可寫成(4AC8)16,或寫成4AC8H。
對于形式化的進制表示,我們可以從0開始,對數字的各個數位進行編號,即個位起往左依次為編號0,1,2,……;對稱的,從小數點后的數位則是-1,-2,……
進行進制轉換時,我們不妨設源進制(轉換前所用進制)的基為R1,目標進制(轉換后所用進制)的基為R2,原數值的表示按數位為AnA(n-1)……A2A1A0.A-1A-2……,R1在R2中的表示為R,則有(AnA(n-1)……A2A1A0.A-1A-2……)R1=(An*R^n+A(n-1)*R^(n-1)+……+A2*R^2+A1*R^1+A0*R^0+A-1*R^(-1)+A-2*R^(-2))R2
(由于此處不可選擇字體,說明如下:An,A2,A-1等符號中,n,2,-1等均應改為下標,而上標的冪次均用^作為前綴)
舉例:
一個十進制數110,其中百位上的1表示1個10^2,既100,十位的1表示1個10^1,即10,個位的0表示0個100,即0。
一個二進制數110,其中高位的1表示1個2^2,即4,低位的1表示1個2^1,即2,最低位的0表示0個2^0,即0。
一個十六進制數110,其中高位的1表示1個16^2,即256,低位的1表示1個16^1,即16,最低位的0表示0個16^0,即0。
可見,在數制中,各位數字所表示值的大小不僅與該數字本身的大小有關,還與該數字所在的位置有關,我們稱這關系為數的位權。
十進制數的位權是以10為底的冪,二進制數的位權是以2為底的冪,十六進制數的位權是以16為底的冪。數位由高向低,以降冪的方式排列。
1.二進制數、十六進制數轉換為十進制數(按權求和)
二進制數、十六進制數轉換為十進制數的規律是相同的。把二進制數(或十六進制數)按位權形式展開多項式和的形式,求其最后的和,就是其對應的十進制數——簡稱“按權求和”.
例如:把(1001.01)2轉換為十進制數。
解:(1001.01)2
=1*8+4*0+2*0+1*1+0*(1/2)+1*(1/4)
=8+0+0+1+0+0.25
=9.25
把(38A.11)16轉換為十進制數
解:(38A.11)16
=3×16的2次方+8×16的1次方+10×16的0次方+1×16的-1次方+1×16的-2次方
=768+128+10+0.0625+0.0039
=906.0664
2.十進制數轉換為二進制數,十六進制數(除2/16取余法)
整數轉換.一個十進制整數轉換為二進制整數通常采用除二取余法,即用2連續除十進制數,直到商為0,逆序排列余數即可得到――簡稱除二取余法.
例:將25轉換為二進制數
解:25÷2=12 余數1
12÷2=6 余數0
6÷2=3 余數0
3÷2=1 余數1
1÷2=0 余數1
所以25=(11001)2
同理,把十進制數轉換為十六進制數時,將基數2轉換成16就可以了.
例:將25轉換為十六進制數
解:25÷16=1 余數9
1÷16=0 余數1
所以25=(19)16
3.二進制數與十六進制數之間的轉換
由于4位二進制數恰好有16個組合狀態,即1位十六進制數與4位二進制數是一一對應的.所以,十六進制數與二進制數的轉換是十分簡單的.
(1)十六進制數轉換成二進制數,只要將每一位十六進制數用對應的4位二進制數替代即可――簡稱位分四位.
例:將(4AF8B)16轉換為二進制數.
解: 4 A F 8 B
0100 1010 1111 1000 1011
所以(4AF8B)16=(1001010111110001011)2
(2)二進制數轉換為十六進制數,分別向左,向右每四位一組,依次寫出每組4位二進制數所對應的十六進制數――簡稱四位合一位.
例:將二進制數(000111010110)2轉換為十六進制數.
解: 0001 1101 0110
1 D 6
所以(111010110)2=(1D6)16
轉換時注意最后一組不足4位時必須加0補齊4位
1)R進制轉換成十進制
任意R進制數據按權展開、相加即可得十進制數據。 例如:N = 1101.0101B = 1*2^3+1*2^2+0*21+1*2^0+0*2^-1+1*2^-2+0*2^-3+1*2^-4 = 8+4+0+1+0+0.25+0+0.0625 = 13.3125
N = 5A.8 H = 5*161+A*160+8*16-1 = 80+10+0.5 = 90.5
2)十進制轉換R 進制
十進制數轉換成R 進制數,須將整數部分和小數部分分別轉換.
1.整數轉換----除R 取余法 規則:(1)用R 去除給出的十進制數的整數部分,取其余數作為轉換后的R 進制數據的整數部分最低位數字; (2)再用2去除所得的商,取其余數作為轉換后的R 進制數據的高一位數字; (3)重復執行(2)操作,一直到商為0結束。 例如: 115 轉換成 Binary數據和Hexadecimal數據 (圖2-4) 所以 115 = 1110011 B = 73 H
2.小數轉換-----乘R 取整法 規則:(1)用R 去除給出的十進制數的小數部分,取乘積的整數部分作為轉換后R 進制小數點后第一位數字; (2)再用R 去乘上一步乘積的小數部分,然后取新乘積的整數部分作為轉換后R 進制小數的低一位數字; (3)重復(2)操作,一直到乘積為0,或已得到要求精度數位為止。
進制數及轉換詳解
- 進制數(5958)
相關推薦
32位單精度IEEE-754浮點數轉換為10進制數
本帖最后由 hejin515 于 2016-6-5 16:02 編輯
請問誰接做過32位單精度IEEE-754浮點數的數據采集,LabVIEW如何實現將其轉換為十進制數?轉化的方式如下圖,用C好實現,但是用LabVIEW簡直覺得不可思議。
2016-06-05 15:59:32
ADC轉換的結果是二進制數,那轉換的結果怎么換算成輸入電壓?
ADC轉換的結果是二進制數吧,那轉換的結果怎么換算成輸入電壓?
我知道要用到一個基準電壓!那問題是怎么看一個ADC的基準電壓呢?與輸入電壓的范圍有什么關系呢?
麻煩好心人解答哈!!小弟非常感謝
2023-12-14 06:56:44
ADC轉換的結果是二進制數,那轉換的結果怎么換算成輸入電壓?
ADC轉換的結果是二進制數吧,那轉換的結果怎么換算成輸入電壓?我知道要用到一個基準電壓!那問題是怎么看一個ADC的基準電壓呢?與輸入電壓的范圍有什么關系呢?麻煩好心人解答哈!!小弟非常感謝
2019-01-09 11:09:44
BCD碼與十進制數相互轉換,無密碼,可直接用
本帖最后由 kevindandan 于 2019-6-5 16:09 編輯
前面有個串口的小應用,涉及到十進制數與BCD碼的相互轉換,看似很簡單,也花了點時間。附件是LabVIEW2017的代碼,希望同壇友共同交流,有改進意見的可以提,謝謝。
2018-09-08 07:56:13
C語言如何實現八進制轉換為十進制輸出
C語言實現 八進制轉換為十進制輸出八進制由 0~7 八個數字組成 以0開頭(注意是數字 0,不是字母 o,例如 int a = 015;//換算成十進制為 13;#defineVAL0015宏定義
2021-07-15 07:38:55
KEIL5調試時能否把調試窗口中的十六進制數轉換為十進制顯示?
各路神請教大一下,keil5調試時,能否把調試窗口中的十六進制數轉換為十進制顯示,如果可以,該怎么設置?
2019-08-23 04:35:52
LTM4686通過pmbus讀出的寄存器的值,怎么樣轉換為十進制數呢?
LTM4686 通過pmbus讀出的寄存器的值,怎么樣轉換為十進制數呢?是否有轉換公式呢?如溫度、電壓、電流等。
2024-01-05 06:47:13
labview中如何將一個3字節的十六進制數轉換為十進制
求教大神,如何用labview實現將一個3字節的十六進制數轉換為十進制,如將7D8B79轉換為對應的十進制8227705。望大神指點!
2015-07-22 16:39:23
labview中字符串轉換為16進制的數搞不清楚了
我再程序框圖中將VISA讀取函數讀取的字符串通過截取部分字符串的方式拆分成四部分,除了開頭的FF,剩余的我想分成四個數據,但是截取之后轉換為16進制的數時結果為0,求各路大神幫助
2017-04-25 15:42:26
labview分享VI:36進制字符串與10進制數值相互轉換
本帖最后由 liuh199416 于 2019-6-4 16:52 編輯
前幾天寫客戶提了個要求,要我增加36進制的計數功能,由0-9和A-Z組成,我就簡化了一下,做了這個36進制和10進制轉換的VI,再用十進制數進行計算,最后再轉回36進制。如圖具體程序見附件
2019-05-27 19:25:13
labview編程模擬十進制數到二進制數的轉換過程
模擬十進制數到二進制數的轉換過程,以LED來模擬各個二進制位,并能以動畫方式模擬計數的過程。 選擇手動方式時,將8個LED變成滑動條中數字的二進制(基數2)表示。例如,如果滑動條設置為數字10(在
2018-12-07 22:20:10
labview里單精度浮點數和十六進制數如何相互轉換?
我需要將一個單精度的浮點數(如0.33)轉換為十六進制數然后通過串口發送,同時還需將串口讀取的十六進制數轉換為單精度浮點數。 求問在labview里如何使浮點數和十六進制數相互轉換?
2015-10-14 11:04:28
xilinx網絡服務器怎么將十六進制數轉換為二進制數?
嗨 在xilinx網絡服務器應用程序中,我使用ml402板與xilinx 10.1版本...我能ping,但網頁??沒有彈出將十六進制數轉換為二進制數...請幫我解決這個問題.... 。上次我也沒有得到任何回復我的問題....我正在等待一些有用的建議!!!!
2020-03-26 10:33:33
關于兩位十進制數轉換成二進制數的仿真 求助啊
求助,不怎么懂這題該怎么做。求教。用兩片四位全加器74283和必要的邏輯門設計一個數制轉換電路,實現將輸入的兩位十進制數轉換成二進制數,十進制數的輸入采用8421BCD碼來表示。用multisim仿真畫圖。
2016-07-01 20:13:27
關于十六進制轉換問題請教
我在做下位機與上位機通訊時,返回的是十六進制數組,想將返回數組提取有用數據后(數組2)轉換為十進制數輸出(數組3),再寫入表格控件里。為什么在FOR循環里轉換不了,數組3輸出都是0。請教有經驗高手解答,謝謝!如下圖所示。
2015-01-26 10:02:58
十進制數的位權圖
十進制 好,那就讓我們來看看十進制 所謂十進制就是以10為基數的計數體制,其計數規律是逢十進一。 圖1.3.1展示了十進制的位號和位權之間關系的圖解。位號3210-1-2-3十進制數
2009-04-06 23:47:02
十進制轉換十六進制,十進制數字過長,轉換結果報錯
我用數值轉換十六進制的函數,當數字比較短時轉換是沒有問題的,可當數字達到一定長度時,就會出現錯誤的轉換結果,可是我需要這么長的轉換,有沒有高數指點下,謝謝~
2015-04-06 22:21:17
十進制和二進制之間的轉換原理
十進制和二進制之間的轉換 既然一個數可以用二進制和十進制兩種不同形式來表示,那么兩著之間就必然有一定的轉換關系。 由十進制數的一般表示式: 可以得到整數的一般表達式: 將等式兩邊分別除以2
2009-04-06 23:54:14
十六進制和八進制轉換原理
,可以得到十六進制數的一般表達式:例:十六進制轉換為十進制: (4E6)H= 4×162+14×161+6×160 = 4×256+14×16+6×1=(1254)D例:二進制轉換為十六進制
2009-04-06 23:54:44
十六進制字符串轉成10進制數?
條件說明:0 labview 2018,win10 64位1 數據來源 0-10V adc 采集,通過串口發送,數據為16進制數 9600 8 0 12 串口能夠讀取數據,如圖1所示3 其中圖1中
2020-12-11 22:01:28
十六進制數字符串至數值轉換的問題
`通過串口發送和接收數據。接收到的十六進制數據想要變為十進制數據輸出。但是用“十六進制數字符串至數值轉換”這個空間最后的顯示結果是0。自認為是十六進制數中出現了空格的原因。不知哪位高手能夠解答一下如何能將字符串中的空格去掉或者通過其他什么方法能夠將十六進制數轉化為十進制數輸出。謝謝!`
2013-04-09 10:47:40
十六進制數字符串至數值或字符轉換的問題
十進制數),“字符串到字節數組” 轉換是按每一位轉換的(即48.49.48.50.....) 有沒有什么好辦法解決啊?通過串口接收到的字符串是以十六進制顯示的,這樣通過十六進制數字符串至數值轉換這個控件
2015-10-09 15:03:04
如何使用printf顯示16進制數
//使用printf顯示16進制數//使用printf顯示16進制數void UART0_ShowHex(uint8 *buf,uint8 len){ uint8 i; printf("
2021-11-26 08:11:49
如何將10進制的一個數如11轉換成16進制數0X0B
如何將10進制的一個數如11轉換成16進制數0X0B,然后與原來的16進制數組 01 02 03 04 05放在一起組成 0B 01 02 03 04 05,我用數值至十六進制字符串轉換這個函數把
2014-09-06 15:36:31
如何將SPI Master轉換為十六進制數?
大家好,我需要通過SPI Master發送十進制數,但是SpimgWruteXDATA()只能發送十六進制數。如何發送小數?如何將它們轉換為十六進制,然后放入SPimeWruteXDATA()函數?問候,Hakob
2019-09-30 11:15:52
如何將labview串口接收到的多路16進制數據轉換成相應的10進制數,并可以選擇輸出
如何將labview串口接收到的多路16進制數據轉換成相應的10進制數,并可以選擇輸出?小弟目前已經做到串口收到的數據先轉換成十進制,強制轉換成整形數據,再除以100,變成2位精度的小數,然后直接
2016-04-07 14:26:40
如何理解二進制運算規則 二進制是如何運算的
的數都是0)。小數部分也一樣,但精確度較少。(2)二進制轉換為八進制:采用“三位一并法”(是以小數點為中心向左右兩邊以每三位分組,不足的補上0)這樣就可以輕松的進行轉換。例:將二進制數
2019-12-11 17:49:02
常用的進制轉換方法
實際工作中,經常需要將某個進制的數轉換成其他進制的數,最常碰到就是10進制轉16進制和10進制轉2進制。 10進制轉換成其他進制使用的方法叫“除k取余法”,“除k”中這個k就是我們需要轉換
2021-01-14 16:37:47
怎么將16位二進制數轉換成十進制數的函數?
有沒有人建立一個將16位二進制數轉換成十進制數的函數?謝謝,JB 以上來自于谷歌翻譯 以下為原文Has anyone built a function(s) that converts a 16-bit binary number into decimal?Thanks,JB
2019-03-26 11:21:54
怎么把一個十進制數轉換成4字節的十六進制數?
如題,向串口發送十六進制數,例如10000轉換成0x00,0x00,0x27,0x10,然后送到串口,用數值至十六進制字符串函數,轉成的是2710,不是我希望的,怎么轉啊,求高手,謝謝!
2014-11-08 20:52:31
求教!matlab實現任意十進制數轉換成十六進制的程序。
程序怎么編啊。。不會啊。。{:4_106:}dec2Hex命令十進制數范圍太小。求大神幫忙~幫忙寫一下程序~~跪謝!!!
2013-12-19 21:25:40
程序數據進制轉換16進制 10進制 2進制的 互相轉換的軟件
本帖最后由 a2900755 于 2016-4-18 16:14 編輯
做了一套 數據轉換 軟件 16進制 10進制 2進制的 互相轉換的軟件
2016-04-18 16:12:27
請問怎么將ASCII碼轉換成16進制數?
遇到麻煩了:用51單片機想把紅外遙控器的鍵值顯示在1602上,可是顯示的是ASCII碼,不能如實反應出遙控器解碼出來的16進制數。如何在1602上顯示出紅外遙控器的16進制鍵值?謝謝!
2019-01-14 04:24:29
進制轉換
本文介紹了二進制、十八六四種之間相互的轉換,大家 本文介紹了二進制、十八六四種之間相互的轉換,大家 本文介紹了二進制、十八六四種之間相互的轉換,大家 本文介紹了二進制、十八六四種之間相互的轉換,大家
2016-08-31 16:11:340
評論
查看更多