關(guān)于0x16進(jìn)制

大學(xué)講過确憨,忘完了氧猬,搜下資料記錄了下

概念:

以0x開始的數(shù)據(jù)表示16進(jìn)制怀伦,計(jì)算機(jī)中每位的權(quán)為16,即(16進(jìn)制)10 = (10進(jìn)制)1×16
備注:這里的0是數(shù)字0凡恍,不是字母O志秃!

為什么需要十六進(jìn)制

編程中,我們常用的還是10進(jìn)制……畢竟C/C++是高級語言嚼酝。
比如:
int a = 100,b = 99;
不過浮还,由于數(shù)據(jù)在計(jì)算機(jī)中的表示,最終以二進(jìn)制的形式存在革半,所以有時(shí)候使用二進(jìn)制碑定,可以更直觀地解決問題。
但又官,二進(jìn)制數(shù)太長了。比如int 類型占用4個(gè)字節(jié)漫试,32位六敬。比如100,用int類型的二進(jìn)制數(shù)表達(dá)將是:
0000 0000 0000 0000 0000 0000 0110 0100
面對這么長的數(shù)進(jìn)行思考或操作驾荣,沒有人會(huì)喜歡外构。因此,C,C++ 沒有提供在代碼直接寫二進(jìn)制數(shù)的方法播掷。
用16進(jìn)制或8進(jìn)制可以解決這個(gè)問題审编。因?yàn)椋?strong>進(jìn)制越大,數(shù)的表達(dá)長度也就越短歧匈。不過垒酬,為什么偏偏是16或8進(jìn)制,而不其它的件炉,諸如9或20進(jìn)制呢勘究?
2、8斟冕、16口糕,分別是2的1次方,3次方磕蛇,4次方景描。這一點(diǎn)使得三種進(jìn)制之間可以非常直接地互相轉(zhuǎn)換。8進(jìn)制或16進(jìn)制縮短了二進(jìn)制數(shù)秀撇,但保持了二進(jìn)制數(shù)的表達(dá)特點(diǎn)超棺。在下面的關(guān)于進(jìn)制轉(zhuǎn)換的課程中,你可以發(fā)現(xiàn)這一點(diǎn)捌袜。

十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)

2進(jìn)制说搅,用兩個(gè)阿拉伯?dāng)?shù)字:0、1虏等;
8進(jìn)制弄唧,用八個(gè)阿拉伯?dāng)?shù)字:0适肠、1、2候引、3侯养、4、5澄干、6逛揩、7;
10進(jìn)制麸俘,用十個(gè)阿拉伯?dāng)?shù)字:0到9辩稽;
16進(jìn)制,用十六個(gè)阿拉伯?dāng)?shù)字……等等从媚,阿拉伯人或說是印度人逞泄,只發(fā)明了10個(gè)數(shù)字啊拜效?
16進(jìn)制就是逢16進(jìn)1喷众,但我們只有0~9這十個(gè)數(shù)字,所以我們用A紧憾,B到千,C,D赴穗,E憔四,F(xiàn)這六個(gè)字母來分別表示10,11望抽,12加矛,13,14煤篙,15斟览。字母不區(qū)分大小寫。
十六進(jìn)制數(shù)的第0位的權(quán)值為16的0次方辑奈,第1位的權(quán)值為16的1次方苛茂,第2位的權(quán)值為16的2次方……
所以,在第N(N從0開始)位上鸠窗,如果是是數(shù) X (X 大于等于0妓羊,并且X小于等于 15,即:F)表示的大小為 X * 16的N次方稍计。
假設(shè)有一個(gè)十六進(jìn)數(shù) 2AF5, 那么如何換算成10進(jìn)制呢躁绸?
用豎式計(jì)算:
2AF5換算成10進(jìn)制:
第0位: 5 * 16^0 = 5
第1位: F * 16^1 = 240
第2位: A * 16^2 = 2560
第3位: 2 * 16^3 = 8192 +


10997
直接計(jì)算就是:
5 * 16^0 + F * 16^1 + A * 16^2+2 * 16^3 = 10997[1]

(別忘了,在上面的計(jì)算中,A表示10净刮,而F表示15)

十六進(jìn)制數(shù)的表達(dá)方法

如果不使用特殊的書寫形式剥哑,16進(jìn)制數(shù)也會(huì)和10進(jìn)制相混。隨便一個(gè)數(shù):9876淹父,就看不出它是16進(jìn)制或10進(jìn)制株婴。
C,C++規(guī)定暑认,16進(jìn)制數(shù)必須以 0x開頭困介。比如 0x1表示一個(gè)16進(jìn)制數(shù)。而1則表示一個(gè)十進(jìn)制蘸际。另外如:0xff,0xFF,0X102A,等等座哩。其中的x也不區(qū)分大小寫。(注意:0x中的0是數(shù)字0粮彤,而不是字母O)
以下是一些用法示例:
int a = 0x100F;
int b = 0x70 + a;
至此八回,我們學(xué)完了所有進(jìn)制:10 進(jìn)制,8進(jìn)制驾诈,16進(jìn)制數(shù)的表達(dá)方式。最后一點(diǎn)很重要溶浴,C/C++中乍迄,10進(jìn)制數(shù)有正負(fù)之分,比如12表示正12士败,而-12表示負(fù)12闯两,;但8進(jìn)制和16進(jìn)制只能用來表示無符號的正整數(shù)谅将,如果你在代碼中里:-078漾狼,或者寫:-0xF2,C,C++并不把它當(dāng)成一個(gè)負(fù)數(shù)。

十六進(jìn)制數(shù)互相轉(zhuǎn)換

二進(jìn)制和十六進(jìn)制的互相轉(zhuǎn)換比較重要饥臂。不過這二者的轉(zhuǎn)換卻不用計(jì)算逊躁,每個(gè)C,C++程序員都能做到看見二進(jìn)制數(shù)隅熙,直接就能轉(zhuǎn)換為十六進(jìn)制數(shù)稽煤,反之亦然。
我們也一樣囚戚,只要學(xué)完這一小節(jié)酵熙,就能做到。
首先我們來看一個(gè)二進(jìn)制數(shù):1111驰坊,它是多少呢匾二?
你可能還要這樣計(jì)算:1 * 2 ^0+ 1 * 2^1 + 1 * 2^2+ 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。
然而,由于1111才4位察藐,所以我們必須直接記住它每一位的權(quán)值皮璧,并且是從高位往低位記,:8转培、4恶导、2、1浸须。即惨寿,最高位的權(quán)值為 8,然后依次是 4删窒,2裂垦,1。
記住8421肌索,對于任意一個(gè)4位的二進(jìn)制數(shù)蕉拢,我們都可以很快算出它對應(yīng)的10進(jìn)制值。
下面列出四位二進(jìn)制數(shù) xxxx 所有可能的值(中間略過部分)
僅4位的2進(jìn)制數(shù) 快速計(jì)算方法 十進(jìn)制值 十六進(jìn)值
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

二進(jìn)制數(shù)要轉(zhuǎn)換為十六進(jìn)制诚亚,就是以4位一段晕换,分別轉(zhuǎn)換為十六進(jìn)制

如(上行為二制數(shù),下面為對應(yīng)的十六進(jìn)制):
1111 1101 站宗, 1010 0101 闸准, 1001 1011
F D , A 5 梢灭, 9 B
反過來夷家,當(dāng)我們看到 FD時(shí),如何迅速將它轉(zhuǎn)換為二進(jìn)制數(shù)呢敏释?
先轉(zhuǎn)換F:
看到F库快,我們需知道它是15(可能你還不熟悉A~F這五個(gè)數(shù)),然后15如何用8421湊呢钥顽?應(yīng)該是8 + 4 + 2 + 1义屏,所以四位全為1 :1111。
接著轉(zhuǎn)換 D:
看到D耳鸯,知道它是13湿蛔,13如何用8421湊呢?應(yīng)該是:8 + 4 + 1,即:1101县爬。
所以,FD轉(zhuǎn)換為二進(jìn)制數(shù)阳啥,為: 1111 1101
由于十六進(jìn)制轉(zhuǎn)換成二進(jìn)制相當(dāng)直接,所以财喳,我們需要將一個(gè)十進(jìn)制數(shù)轉(zhuǎn)換成2進(jìn)制數(shù)時(shí)察迟,也可以先轉(zhuǎn)換成16進(jìn)制斩狱,然后再轉(zhuǎn)換成2進(jìn)制。
比如扎瓶,十進(jìn)制數(shù) 1234轉(zhuǎn)換成二制數(shù)所踊,如果要一直除以2,直接得到2進(jìn)制數(shù)概荷,需要計(jì)算較多次數(shù)秕岛。所以我們可以先除以16,得到16進(jìn)制數(shù):

被除數(shù) 計(jì)算過程 余數(shù)
1234 1234/16 77 2
77 77/16 4 13 (D)
4 4/16 0 4

結(jié)果16進(jìn)制為: 0x4D2
然后我們可直接寫出0x4D2的二進(jìn)制形式:0100 1101 0010误证。
其中對映關(guān)系為:
0100 -- 4
1101 -- D
0010 -- 2
同樣继薛,如果一個(gè)二進(jìn)制數(shù)很長,我們需要將它轉(zhuǎn)換成10進(jìn)制數(shù)時(shí)愈捅,除了前面學(xué)過的方法是遏考,我們還可以先將這個(gè)二進(jìn)制轉(zhuǎn)換成16進(jìn)制,然后再轉(zhuǎn)換為10進(jìn)制蓝谨。
下面舉例一個(gè)int類型的二進(jìn)制數(shù):
01101101 11100101 10101111 00011011
我們按四位一組轉(zhuǎn)換為16進(jìn)制: 6D E5 AF 1B

字節(jié)灌具、比特、十六進(jìn)制

一個(gè)字節(jié)八個(gè)比特,就是八個(gè)二進(jìn)制位 0000 0000 0x00-0xFF (十進(jìn)制0-255)
四個(gè)二進(jìn)制數(shù)最大表示為15,就是一個(gè)16進(jìn)制數(shù),所以八位可以表示成兩個(gè)16進(jìn)制的數(shù)
換句話說:一個(gè)字節(jié)就是兩個(gè)十六進(jìn)制數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末譬巫,一起剝皮案震驚了整個(gè)濱河市咖楣,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芦昔,老刑警劉巖截歉,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異烟零,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)咸作,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門锨阿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人记罚,你說我怎么就攤上這事墅诡。” “怎么了桐智?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵末早,是天一觀的道長。 經(jīng)常有香客問我说庭,道長然磷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任刊驴,我火速辦了婚禮姿搜,結(jié)果婚禮上寡润,老公的妹妹穿的比我還像新娘。我一直安慰自己舅柜,他們只是感情好梭纹,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著致份,像睡著了一般变抽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上氮块,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天绍载,我揣著相機(jī)與錄音,去河邊找鬼雇锡。 笑死逛钻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锰提。 我是一名探鬼主播曙痘,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼立肘!你這毒婦竟也來了边坤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤谅年,失蹤者是張志新(化名)和其女友劉穎茧痒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體融蹂,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡旺订,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了超燃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片区拳。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖意乓,靈堂內(nèi)的尸體忽然破棺而出樱调,到底是詐尸還是另有隱情,我是刑警寧澤届良,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布笆凌,位于F島的核電站,受9級特大地震影響士葫,放射性物質(zhì)發(fā)生泄漏乞而。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一慢显、第九天 我趴在偏房一處隱蔽的房頂上張望晦闰。 院中可真熱鬧放祟,春花似錦、人聲如沸呻右。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽声滥。三九已至眉撵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間落塑,已是汗流浹背纽疟。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留憾赁,地道東北人污朽。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像龙考,于是被迫代替她去往敵國和親蟆肆。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 網(wǎng)站亂碼問題我們會(huì)經(jīng)常碰到晦款,大多見于非英文的中文字符或其他字符亂碼炎功,而且,這類問題常常是因?yàn)榫幋a方式問題缓溅,主要原因...
    波段頂?shù)?/span>閱讀 2,857評論 1 9
  • 1 關(guān)鍵字 1.1 關(guān)鍵字的概述 Java的關(guān)鍵字對java的編譯器有特殊的意義蛇损,他們用來表示一種數(shù)據(jù)類型,或...
    哈哈哎呦喂閱讀 652評論 0 0
  • 這幾部電影讓我想起坛怪,至今心有不安淤齐。 一是《珍愛》,記得看的時(shí)候坐立難安袜匿。 當(dāng)時(shí)是被文學(xué)院女生討論了上百次的外國文學(xué)...
    葉鹿閱讀 760評論 0 0
  • 1.構(gòu)造器: 構(gòu)造函數(shù)在一個(gè)類沒有寫任何的構(gòu)造函數(shù)的時(shí)候床玻,系統(tǒng)會(huì)生成一個(gè)默認(rèn)的空參數(shù)構(gòu)造函數(shù),這個(gè)構(gòu)造函數(shù)的修飾符...
    徐筆筆閱讀 310評論 0 0
  • 對水鄉(xiāng)紹興的向往來源于中學(xué)課本魯迅的文章和父親口中的紹興黃酒贫堰。此次回鄉(xiāng)尋親_紹興被列入備選機(jī)動(dòng)景點(diǎn)穆壕。 從杭州坐高鐵...
    藍(lán)色海洋123閱讀 577評論 2 4