十六進制和二進制數是單片機、嵌入式編程中常用到的數據形式,熟悉兩種數據類型的轉換很有必要。
計算機的數字語言
十進制數我們都很熟悉,它是由0~9這十個數組合而成的。可以簡單的描述十進制數為:見十進一。個、十、百、千、萬等每位上最大的數值為9,最小為0。
同樣可以理解十六進制數為:見十六進一。它是由0~9,a,b,c,d,e,f這16個數組合而成的。每位上最大的數值為f,最小為0。
同樣,二進制數為:見二進一。它是由0和1這兩個數組合而成的。
不同進制的進位計算
我們都知道,二進制在嵌入式編程中很多情況下都是直接對應硬件管腳狀态,1表示高,0表示低,在控制LED點陣或者大量繼電器的的時候,如果我們一位一位進行操作,程序會寫的很啰嗦,但是用十六進制來表示的話,就很簡單明了了。 十六進制數通常用unsigned char (8位),unsigned short(16位)或者unsigned long(32位)這幾種類型來表示 ,也就是說,1個十六進制數就可以用來描述8/16/32個二進制數,那該如何快速轉換呢?
十六進制數的每一位數都可以用4位二進制數來表示,
0x0=0B0000,0x1=0B0001,0x2=0B0010,0x3=0B0011,
0x4=0B0100,0x5=0B0101,0x6=0B0110,0x7=0B0111,
0x8=0B1000,0x9=0B1001,0xA=0B1010,0xB=0B1011,
0xC=0B1100,0xD=0B1101,0xE=0B1110,0xF=0B1111
隻要記住最基本的16個二進制數,在遇到十六進制數轉換時,就很容易快速的實現了。
如:0xAF5B就是把A、F、5、B分别展開,對應上表,很快得出:
0xAF5B = 0B1010 1111 0101 1011 。
反過來也是一樣,把二進制數從最低位(一般從最右邊數)開始每4位為一組進行轉換就可以了,最後不夠4位的話在左側補0即可;
如: 0B 1 1011 0110 = 0B 0001 1011 0110 =0x1B6
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!