十六進製制轉換

2021-09-20 10:05:44 字數 2645 閱讀 8166

0x16進製制 編輯 討論

現實生活中,我們最常見的數為十進位制數,比如交通訊號燈上的數字,電子錶上的時間等。如果在這些地方你看到0xaa,就會感覺很奇怪。但是這樣的數代表什麼意思,為什麼會有這樣的數,它與十進位制的數有什麼關係以及它都有哪些應用呢。下面將帶你了解一下十六進製制數的秘密。

中文名 0x16進製制 基本概述 以0x開始的資料表示16進製制 備 注 0是數字0,不是字母o 作 用 c/c++是高階語言

10997

直接計算就是:

5 * 16^0 + f * 16^1 + a * 16^2+2 * 16^3 = 10997 [1]

(別忘了,在上面的計算中,a表示10,而f表示15)

表達方法編輯

如果不使用特殊的書寫形式,16進製制數也會和10進製相混。隨便乙個數:9876,就看不出它是16進製制或10進製。

c,c++規定,16進製制數必須以 0x開頭。比如 0x1表示乙個16進製制數。而1則表示乙個十進位制。另外如:0xff,0xff,0x102a,等等。其中的x也不區分大小寫。(注意:0x中的0是數字0,而不是字母o)

以下是一些用法示例:

int a = 0x100f;

int b = 0x70 + a;

至此,我們學完了所有進製:10 進製,8進製,16進製制數的表達方式。最後一點很重要,c/c++中,10進製數有正負之分,比如12表示正12,而-12表示負12,;但8進製和16進製制只能用來表示無符號的正整數,如果你在**中里:-078,或者寫:-0xf2,c,c++並不把它當成乙個負數。

使用編輯

轉義符也可以接乙個16進製制數來表示乙個字元。如在6.2.4小節中說的 『?』 字元,可以有以下表達方式:

『?』 //直接輸入字元

『\77』 //用八進位制,此時可以省略開頭的0

『\0x3f』 //用十六進製制

同樣,這一小節只用於了解。除了空字元用八進位制數 『\0』 表示以外,我們很少用後兩種方法表示乙個字元。

互相轉換編輯

二進位制和十六進製制的互相轉換比較重要。不過這二者的轉換卻不用計算,每個c,c++程式設計師都能做到看見二進位制數,直接就能轉換為十六進製制數,反之亦然。

我們也一樣,只要學完這一小節,就能做到。

首先我們來看乙個二進位制數:1111,它是多少呢?

你可能還要這樣計算:1 * 2 ^0+ 1 * 2^1 + 1 * 2^2+ 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。

然而,由於1111才4位,所以我們必須直接記住它每一位的權值,並且是從高位往低位記,:8、4、2、1。即,最高位的權值為2= 8,然後依次是 2 = 4,=2, 2 = 1。

記住8421,對於任意乙個4位的二進位制數,我們都可以很快算出它對應的10進製值。

下面列出四位二進位制數 ***x 所有可能的值(中間略過部分)

僅4位的2進製數 快速計算方法 十進位制值 十六進值

1111 = 8 + 4 + 2 + 1 = 15 f

1110 = 8 + 4 + 2 + 0 = 14 e

1101 = 8 + 4 + 0 + 1 = 13 d

1100 = 8 + 4 + 0 + 0 = 12 c

1011 = 8 + 0 + 2 + 1 = 11 b

1010 = 8 + 0 + 2 + 0 = 10 a

1001 = 8 + 0 + 0 + 1 = 9 9

…0001 = 0 + 0 + 0 + 1 = 1 1

0000 = 0 + 0 + 0 + 0 = 0 0

二進位制數要轉換為十六進製制,就是以4位一段,分別轉換為十六進製制。

如(上行為二制數,下面為對應的十六進製制):

1111 1101 , 1010 0101 , 1001 1011

f d , a 5 , 9 b

反過來,當我們看到 fd時,如何迅速將它轉換為二進位制數呢?

先轉換f:

看到f,我們需知道它是15(可能你還不熟悉a~f這五個數),然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全為1 :1111。

接著轉換 d:

看到d,知道它是13,13如何用8421湊呢?應該是:8 + 4 + 1,即:1101。

所以,fd轉換為二進位制數,為: 1111 1101

由於十六進製制轉換成二進位制相當直接,所以,我們需要將乙個十進位制數轉換成2進製數時,也可以先轉換成16進製制,然後再轉換成2進製。

比如,十進位制數 1234轉換成二制數,如果要一直除以2,直接得到2進製數,需要計算較多次數。所以我們可以先除以16,得到16進製制數:

被除數計算過程商餘數

1234

1234/16772

7777/16

413 (d)

44/1604

結果16進製為: 0x4d2

然後我們可直接寫出0x4d2的二進位制形式:0100 1101 0010。

其中對映關係為:

0100 – 4

1101 – d

0010 – 2

同樣,如果乙個二進位制數很長,我們需要將它轉換成10進製數時,除了前面學過的方法是,我們還可以先將這個二進位制轉換成16進製制,然後再轉換為10進製。

下面舉例乙個int型別的二進位制數:

01101101 11100101 10101111 00011011

我們按四位一組轉換為16進製制: 6d e5 af 1b

進製轉換 十六進製制轉八進位制 十六進製制轉十進位制

在十六進製制轉為八進位制的過程中包含了將十六進製制轉化為二進位制以及將二進位制轉化為八進位制!我自己測試是沒什麼問題,但是在藍橋杯官網的測試系統就顯示執行錯誤qwq 不知道為什麼 附 include includeusing namespace std int main if len2 i 3 2 ...

進製轉換 二進位制轉十六進製制 十六進製制轉十進位制

這幾天在做乙個與plc互動的系統,plc會傳過來一些指令,這些指令是二進位制的格式,要轉為4位十進位制的指令來讀,下面是 部分 public class byteschange int beginindex 0 int length 16 string instructions while true...

十六進製制string轉換UIColor 備用

uicolor colorwithhexstring nsstring stringtoconvert nsstring cstring stringtoconvert stringbytrimmingcharactersinset nscharacterset whitespaceandnewli...