每日一句:
同伴衰伯,不一定非要一起走到最后,某一段路上积蔚,對方給自己帶來的朗朗笑聲意鲸,那就已經(jīng)足夠。? ? ? ? ? ? ??? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ??? ??八月長安—《你好尽爆,舊時光》
武漢疫情仍在繼續(xù)怎顾,到今天已有四萬多人被確診,確診人數(shù)雖然在增多漱贱,但慶幸的是沒有向前幾天那樣呈線性增長槐雾。
前幾天聽朋友說他以前去面試,面試官問他八進制轉換二進制原理幅狮,他腦袋瞬間就斷路了募强,這種最基礎的知識,常常容易被大家遺忘崇摄。我自己也是擎值,這種在高中學過的知識,我在學習C語言時也曾因為忘記而不知怎么解題配猫。
首先先看一下維基百科給的定義:進位制是一種記數(shù)方式幅恋,亦稱進位計數(shù)法或位值計數(shù)法。利用這種記數(shù)法泵肄,可以使用有限種數(shù)字符號來表示所有的數(shù)值捆交。一種進位制中可以使用的數(shù)字符號的數(shù)目稱為這種進位制的基數(shù)或底數(shù)。若一個進位制的基數(shù)為n腐巢,即可稱之為n進位制品追,簡稱n進制。現(xiàn)在最常用的進位制是十進制冯丙,這種進位制通常使用10個阿拉伯數(shù)字(即0-9)進行記數(shù)肉瓦。
先說十進制和二進制的轉換
十進制轉二進制方法:先用十進制除二取余法遭京,即十進制數(shù)除二,余數(shù)為權位上的數(shù)泞莉,得到的商值繼續(xù)除哪雕,直到商為0為止。
例:將十進制的(43)D轉換為二進制的步驟如下:
1. 將商43除以2鲫趁,商21余數(shù)為1斯嚎;
2. 將商21除以2,商10余數(shù)為1挨厚;
3. 將商10除以2堡僻,商5余數(shù)為0;
4. 將商5除以2疫剃,商2余數(shù)為1钉疫;
5. 將商2除以2,商1余數(shù)為0巢价;?
6. 將商1除以2牲阁,商0余數(shù)為1;?
即結果為:(43)D=(101011)B壤躲;
二進制轉十進制的方法:把二進制數(shù)按權展開咨油,相加即得十進制數(shù)。
例:將二進制的(101011)B轉換為十進制的步驟如下:
1. 第0位 1 x 2^0 = 1柒爵;
2. 第1位 1 x 2^1 = 2;
3. 第2位 0 x 2^2 = 0赚爵;
4. 第3位 1 x 2^3 = 8棉胀;
5. 第4位 0 x 2^4 = 0;
6. 第5位 1 x 2^5 = 32冀膝;
7. 讀數(shù)唁奢,把結果值相加,1+2+0+8+0+32=43窝剖,即(101011)B=(43)D麻掸。
八進制與二進制之間的轉換
八進制轉二進制方法:八進制數(shù)通過除二取余法,得到二進制數(shù)赐纱,對每個八進制為3個二進制脊奋,不足時在最左邊補零。
例:將八進制的(327)O轉換為二進制的步驟如下:
1. 3 = 011疙描;
2. 2 = 010诚隙;
3. 7 = 111;
4. 讀數(shù)起胰,讀數(shù)從高位到低位久又,011010111,即(327)O=(11010111)B。
二進制轉八進制方法:三位二進制數(shù)按權展開相加得到1位八進制數(shù)地消。(注意事項炉峰,3位二進制轉成八進制是從右到左開始轉換,不足時補0)脉执。
例:將二進制的(11010111.0100111)B轉換為八進制的步驟如下:
1. 小數(shù)點前111 = 7疼阔;
2. 010 = 2;
3. 11補全為011适瓦,011 = 3竿开;
4. 小數(shù)點后010 = 2;
5. 011 = 3玻熙;
6. 1補全為100否彩,100 = 4;
7. 讀數(shù)嗦随,讀數(shù)從高位到低位列荔,即(11010111.0100111)B=(327.234)O。
十六進制與二進制之間的轉換
十六進制轉換為二進制方法:十六進制數(shù)通過除2取余法枚尼,得到二進制數(shù)贴浙,對每個十六進制為4個二進制,不足時在最左邊補零署恍。
例:將十六進制的(D7)H轉換為二進制的步驟如下:
1. D = 1101崎溃;
2. 7 = 0111;
3. 讀數(shù)盯质,讀數(shù)從高位到低位袁串,即(D7)H=(11010111)B。
二進制轉換為十六進制方法:與二進制轉八進制方法近似呼巷,八進制是取三合一囱修,十六進制是取四合一。(注意事項王悍,4位二進制轉成十六進制是從右到左開始轉換破镰,不足時補0)。
例:將二進制的(11010111)B轉換為十六進制的步驟如下:
1. 0111 = 7压储;
2. 1101 = D鲜漩;
3. 讀數(shù),讀數(shù)從高位到低位集惋,即(11010111)B=(D7)H宇整。
十進制與八進制或者十六進制數(shù)之間的轉換
十進制轉換為八進制或者十六進制的方法:
NO.1 (間接法)把十進制轉成二進制,然后再由二進制轉成八進制或者十六進制芋膘。(此方法在此就不舉例了哈)
NO.2直接法—把十進制轉八進制或者十六進制按照除8或者16取余鳞青,直到商為0為止霸饲。
例:將十進制的(796)D轉換為八進制的步驟如下:
1. 將商796除以8,商99余數(shù)為4臂拓;
2. 將商99除以8厚脉,商12余數(shù)為3;
3. 將商12除以8胶惰,商1余數(shù)為4傻工;
4. 將商1除以8,商0余數(shù)為1孵滞;
5. 讀數(shù)中捆,因為最后一位是經(jīng)過多次除以8才得到的,因此它是最高位坊饶,讀數(shù)字從最后的余數(shù)向前讀泄伪,1434,即(796)D=(1434)O匿级。
十六進制或者八進制轉換為十進制的方法:把八進制蟋滴、十六進制數(shù)按權展開、相加即得十進制數(shù)痘绎。
例:將八進制的(53)O轉換為十進制的步驟如下:
1. 第0位 3 x 8^0 = 3津函;
2. 第1位 5 x 8^1 = 40;
3. 讀數(shù)孤页,把結果值相加尔苦,3+40=43,即(53)O=(43)D行施。
十六進制與八進制之間的轉換
十六進制轉換為八進制的方法:將十六進制轉換為二進制蕉堰,然后再將二進制轉換為八進制,小數(shù)點位置不變悲龟。
例:將十六進制的(D7)H轉換為八進制的步驟如下:
1. 7 = 0111;
2. D = 1101冰寻;
3. 0111 = 7须教;
4. 010 = 2;
5. 011 = 3斩芭;
6. 讀數(shù)轻腺,讀數(shù)從高位到低位,327划乖,即(D7)H=(327)O贬养。
八進制轉換為十六進制的方法:將八進制轉換為二進制,然后再將二進制轉換為十六進制琴庵,小數(shù)點位置不變误算。
例:將八進制的(327)O轉換為十六進制的步驟如下:
1. 3 = 011仰美;
2. 2 = 010;
3. 7 = 111儿礼;
4. 0111 = 7咖杂;
5. 1101 = D;
6. 讀數(shù)蚊夫,讀數(shù)從高位到低位诉字,D7,即(327)O=(D7)H知纷。
公眾號:程序員Bob(關注即可獲得超百G的學習資源)
一個正在學習C語言的人壤圃,致力于將C語言講得更透徹!
點贊關注~謝謝你~
點個關注和你一起領悟程序員的魅力琅轧。