中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用C語言怎么實現一個進制轉換算法

發布時間:2021-01-25 16:02:51 來源:億速云 閱讀:183 作者:Leah 欄目:開發技術

使用C語言怎么實現一個進制轉換算法?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

1、其他進制轉十進制

1.1、二進制轉十進制

轉換規程: 從最低位開始,將每個位上的數提取出來,乘以2的(位數-1)次方,然后求和,例如: 

二進制 1011 = 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 = 1 + 2 + 0 + 8 = 11

1.2、八制轉十進制

轉換規則: 從最低位開始,將每個位上的數提取出來,乘以8的(位數-1)次方,然后求和,例如:

 八進制 0123 = 3*8^0 + 2*8^1 + 1*8^2 = 3+16+64 = 83

1.3、十六進制轉十進制

轉換規則: 從最低位開始,將每個位上的數提取出來,乘以16的(位數-1)次方,然后求和,例如:

  十六進制 0x34A = 10*16^0 + 4*16^1 + 3*16^2 = 10+64+768 = 842

2、十進制轉其他進制

2.1、十進制轉二進制binary

規則: 將該數不斷除以2,直到商為0為止,然后將每步得到的余數倒過來,就是對應的二進制,故此法叫做除商逆序取余法;

案例: 將56轉換為二進制

 56 :
 56 / 2 = 28 余0
 28 / 2 = 14 余0
 14 / 2 = 7 余0
 7 / 2 = 3 余1
 3 / 2 = 1 余1
 1 / 2 = 0余 1
 故56轉換為二進制的結果是:111000

代碼實現:

#include <stdio.h>

//轉十進制二進制
void main() {
	printf("請輸入一個十進制數:");
	int binary = 0; //二進制數
	int b = 1; //循環標志		 
	int num[100] ; //用來存二進制的數組
	int index = 0;	//數組的下標
	int count = -1; //用來計算數組的使用個數,這里使用-1是因為數組的下標是從0開始的
	//所以當我們循環一次去自增的時候,第一次應該是從0開始,如果count的初始值是0的話
	//就會導致使用的第一個數組的下標為1,那樣會導致存數據的下標index和記錄使用的下標count不一致
	//使數據溢出
	scanf("%d",&binary);
	while (b) {
		num[index] = binary % 2; //每次運算取余
		binary /= 2; //每次運算二進制數需要除以2
		//printf("num[%d]=%d\n",index,num[index]);
		index++; //每循環一次數組下標就移一位
		count++; //每循環一次就表示占用了數組的一個位置
		if (binary == 0) {
			b = 0;
		}
	}
	printf("占用數組位置%d個",count+1);
	printf("\n");
	printf("二進制數為:");
	for (int i = count; i >=0; i--) { 
			printf("%d",num[i]);
	}
	getchar();
	getchar();//回車會被接收,所以需要兩個來暫停控制臺
}

2.2、十進制轉八進制octonary

規則: 將該數不斷除以8,直到商為0,然后將每步得到的余數倒過來,就是對應的八進制。

**案例:**將156轉換為八進制

 156:
 156 / 8 = 19 余 4
 19 / 8 = 2 余 3
 2 / 8 = 0 余 2
 故156轉換為八進制的結果是:0234

代碼實現:

#include <stdio.h>
//十進制轉八進制
#define TRUE 1 //宏定義 true為1
#define FALSE 0//宏定義 false為0
void main() {
	int num[100]; //定義數組用來存儲轉換后的八進制數
	int octonary = 0; //十進制數
	int b = TRUE; //循環賦值的標志
	int index = 0; //存儲八進制位數的下標
	int count = -1; //八進制數的位數
	printf("請輸入一個十進制數:");
	scanf("%d",&octonary);
	while (b) {
		num[index++] = octonary % 8; //獲取余數
		octonary /= 8; //累除
		count++;
		if (octonary == 0) { //當octonary為0時,表示已經除完了,除到底了,這時候只需要將所得到的的余數
			b = FALSE;		//倒過來就是需要求的八進制數了
		}
	}
	printf("占用數組位置%d個\n",count+1);
	printf("八進制數為:");
	for (int i = count; i >= 0; i--) {
		printf("%d",num[i]);
	}

	getchar();
	getchar();

}

2.3、十進制轉十六進制HEX(hexadecimal)

規則: 將該數不斷除以16,直到商為0,然后將每步得到的余數倒過來,就是對應的十六進制。

案例: 將356轉換成十六進制

 356:
 356 / 16 = 22 余 4
 22 / 16 = 1 余 6
 1 / 16 = 0 余 1
 故356轉換為十六進制的結果為0x164

代碼實現:

#include <stdio.h>
#include <stdbool.h>
//十進制轉換為十六進制
void main() {
	int hexadecimal = 0;
	printf("請輸入一個十進制數:");
	scanf("%d",&hexadecimal);
	bool b = true;
	int index = 0;//數組的下標
	int num[100];//用來存儲轉換后十六進制
	while (b) {
		num[index++] = hexadecimal % 16;
		hexadecimal /= 16;
		if (hexadecimal == 0) {
			b = false;
		}
	}
	printf("占用數組的位置%d個\n",index);
	printf("轉換后的十六進制數為:");
	for (int i = index-1; i >= 0; i--) {
		printf("%d",num[i]);
	}
	getchar();
	getchar();
}

3、二進制轉其他進制

3.1、二進制轉八進制

規則: 從低位開始,將二進制數每三位一組(111表示7)分組,不夠的用0補充,將每一組轉換成對應的八進制即可

案例: 將11010101轉成八進制

 11010101:對其進行三位一體分組
 第一組:101 ——>  5
 第二組:010 ——>  2
 第三組:011 ——>  3
 故,二進制11010101對應的八進制數是:0325

3.2、二進制轉十六進制

規則: 從低位開始,將二進制數每四位一組(1111表示F)進行分組,轉成對應的十六進制數即可

案例: 將11010101轉成十六進制

 11010101:對其進行四位一體分組
 第一組:0101 ——> 5
 第二組:1101 ——> 13
 故,二進制11010101轉換為十六進制數是:0xD5

4、其他進制轉二進制

4.1、八進制轉二進制

規則: 將八進制數的每一位,轉換成對應的一個三位的二進制數即可

案例: 將0237轉成二進制

 0237:每一位對應三位二進制數進行拆分
 第一組 7 ——> 111
 第二組 3 ——> 011
 第三組 2 ——> 010
 故,八進制數0237轉換為二進制為:10011111

4.2、十六進制轉二進制

規則: 將十六進制數的每一位,轉換成對應的一個四位的二進制數即可

案例: 將0X23B轉換成二進制數

 0x23B:每一位對應四位二進制數進行拆分
 第一組 B ——> 1011
 第二組 3 ——> 0011
 第三組 2 ——> 0010
 故,0x23B轉換為二進制數為:1000111011

看完上述內容,你們掌握使用C語言怎么實現一個進制轉換算法的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

承德市| 丁青县| 赤峰市| 晋宁县| 抚远县| 松原市| 伊吾县| 延安市| 义马市| 崇义县| 太康县| 海林市| 石首市| 临猗县| 宜章县| 塔河县| 定兴县| 邹城市| 缙云县| 大名县| 诸城市| 巴马| 内黄县| 三明市| 名山县| 盐山县| 眉山市| 深州市| 乌兰察布市| 虹口区| 兖州市| 抚州市| 乌什县| 稻城县| 黄石市| 涟水县| 额济纳旗| 奎屯市| 嘉鱼县| 辽中县| 呼图壁县|