本文目錄一覽:
C語言如何把11位16進位字元串轉成16進位數?
這個就是一個16進位數轉10進位的程序
先以字元串方式逐字元讀入16進位數
然後對每個讀入的字元依次做判斷
t=s[i]-‘0’
//臨時變數t為當前判斷的字元串的ascii碼值減去字元’0’的ascii碼值,這一步的作用是將字元型轉換為整型以供計算
if(t=9)
k=k*16+s[i]-‘0’
//如果t≤9,說明原字元為’0’~’9’,轉換後直接得到對應數字0~9,因此直接將這個數字轉換為十進位即可:k=k*16+s[i]-‘0’即將當前位轉換為十進位
else
k=k*16+s[i]-‘a’+10
//如果t9,說明原字元為’a’~’f’,轉換後不能得到對應數字,必須通過s[i]-‘a’+10把字元’a’~’f’轉換為數字10~15,再逐位轉換為十進位。
C語言中八進位和十六進位怎麼表示以及原碼,反碼
比如十進位的17,
八進位表示為:021
前面加0
十六進位表示為:0x11
前面加0x或者0X
原碼是用二進位表示如果是8bit原碼則為
0001
0001
反碼為二進位的相反,0變為1,1變為0,則反碼為1110
1110
C語言中的二進位、十進位、十六進位各是什麼意思?
計算機中常用的數的進位主要有:二進位、八進位、十六進位,學習計算機要對其有所了解。
2進位,用兩個阿拉伯數字:0、1;
8進位,用八個阿拉伯數字:0、1、2、3、4、5、6、7;
10進位,用十個阿拉伯數字:0到9;
16進位就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。
以下簡介各種進位之間的轉換方法:
一、二進位轉換十進位
例:二進位 「1101100」
1101100 ←二進位數
6543210 ←排位方法
例如二進位換算十進位的演算法:
1*26 + 1*25 + 0*24 + 1*23 + 1* 22 + 0*21 + 0*20
↑ ↑
說明:2代表進位,後面的數是次方(從右往左數,以0開始)
=64+32+0+8+4+0+0
=108
二、二進位換算八進位
例:二進位的「10110111011」
換八進位時,從右到左,三位一組,不夠補0,即成了:
010 110 111 011
然後每組中的3個數分別對應4、2、1的狀態,然後將為狀態為1的相加,如:
010 = 2
110 = 4+2 = 6
111 = 4+2+1 = 7
011 = 2+1 = 3
結果為:2673
三、二進位轉換十六進位
十六進位換二進位的方法也類似,只要每組4位,分別對應8、4、2、1就行了,如分解為:
0101 1011 1011
運算為:
0101 = 4+1 = 5
1011 = 8+2+1 = 11(由於10為A,所以11即B)
1011 = 8+2+1 = 11(由於10為A,所以11即B)
結果為:5BB
四、二進位數轉換為十進位數
二進位數第0位的權值是2的0次方,第1位的權值是2的1次方……
所以,設有一個二進位數:0110 0100,轉換為10進位為:
計算: 0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1 * 26 + 0 * 27 = 100
五、八進位數轉換為十進位數
八進位就是逢8進1。
八進位數採用 0~7這八數來表達一個數。
八進位數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方……
所以,設有一個八進位數:1507,轉換為十進位為:
計算: 7 * 80 + 0 * 81 + 5 * 82 + 1 * 83 = 839
結果是,八進位數 1507 轉換成十進位數為 839
六、十六進位轉換十進位
例:2AF5換算成10進位
直接計算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997
(別忘了,在上面的計算中,A表示10,而F表示15)、
現在可以看出,所有進位換算成10進位,關鍵在於各自的權值不同。
假設有人問你,十進數 1234 為什麼是 一千二百三十四?你盡可以給他這麼一個算式: 1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 100
十進位與二進位轉換之相互演算法
十進位轉二進位:
用2輾轉相除至結果為1
將餘數和最後的1從下向上倒序寫 就是結果
例如302
302/2 = 151 餘0
151/2 = 75 餘1
75/2 = 37 餘1
37/2 = 18 餘1
18/2 = 9 餘0
9/2 = 4 餘1
4/2 = 2 餘0
2/2 = 1 餘0
故二進位為100101110
二進位轉十進位
從最後一位開始算,依次列為第0、1、2…位
第n位的數(0或1)乘以2的n次方
得到的結果相加就是答案
例如:01101011.轉十進位:
第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然後:1+2+0
+8+0+32+64+0=107.
二進位01101011=十進位107.
一、二進位數轉換成十進位數
由二進位數轉換成十進位數的基本做法是,把二進位數首先寫成加權係數展開式,然後按十進位加法規則求和。這種做法稱為”按權相加”法。
二、十進位數轉換為二進位數
十進位數轉換為二進位數時,由於整數和小數的轉換方法不同,所以先將十進位數的整數部分和小數部分分別轉換後,再加以合併。
1. 十進位整數轉換為二進位整數
十進位整數轉換為二進位整數採用”除2取余,逆序排列”法。具體做法是:用2去除十進位整數,可以得到一個商和餘數;再用2去除商,又會得到一個商和餘數,如此進行,直到商為零時為止,然後把先得到的餘數作為二進位數的低位有效位,後得到的餘數作為二進位數的高位有效位,依次排列起來。
2.十進位小數轉換為二進位小數
十進位小數轉換成二進位小數採用”乘2取整,順序排列”法。具體做法是:用2乘十進位小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。
然後把取出的整數部分按順序排列起來,先取的整數作為二進位小數的高位有效位,後取的整數作為低位有效位。
1.二進位與十進位的轉換
(1)二進位轉十進位BR方法:”按權展開求和”
例:
(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10
=(8+0+2+1+0+0.25)10
=(11.25)10
(2)十進位轉二進位
· 十進位整數轉二進位數:”除以2取余,逆序輸出”
例: (89)10=(1011001)2
2 89
2 44 …… 1
2 22 …… 0
2 11 …… 0
2 5 …… 1
2 2 …… 1
2 1 …… 0
0 …… 1
· 十進位小數轉二進位數:”乘以2取整,順序輸出”
例:
(0.625)10= (0.101)2
0.625
X 2
1.25
X 2
0.5
X 2
1.0
2.八進位與二進位的轉換
例:將八進位的37.416轉換成二進位數:
37 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2
例:將二進位的10110.0011 轉換成八進位:
0 1 0 1 1 0 . 0 0 1 1 0 0
2 6 . 1 4
即:(10110.011)2 =(26.14)8
3.十六進位與二進位的轉換BR例:將十六進位數5DF.9 轉換成二進位:
5 D F . 9
0101 1101 1111.1001
即:(5DF.9)16 =(10111011111.1001)2
例:將二進位數1100001.111 轉換成十六進位:
0110 0001 . 1110
6 1 . E
即:(1100001.111)2 =(61.E)16
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293667.html