1. c語言十進制轉化為十六進制
十進制轉化為十六進制代碼:
#include"stdio.h"intmain()
{
intnum=0;
inta[100];
inti=0;
intm=0;
intyushu;
charhex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("請輸入一個十進制數:");
scanf("%d",&num);while(num>0){yushu=num%16;
a[i++]=yushu;
num=num/16;
}printf("轉化為十六進制的數為:0x");for(i=i-1;i>=0;i--)//倒序輸出{m=a[i];
printf("%c",hex[m]);}printf(" ");
}
程序運行結果:
(1)c語言十進制的狀態轉換圖擴展閱讀:
進制轉換由一組數碼符號和兩個基本因素「基數」與「位權」構成。基數是指,進位計數制中所採用的數碼(數制中用來表示「量」的符號)的個數。位權是指,進位制中每一固定位置對應的單位值。
舉例:二進制數轉換為十進制數
二進制數第0位的權值是2的0次方,第1位的權值是2的1次方……
所以,設有一個二進制數:0110 0100,轉換為10進制為:
下面是豎式:
0110 0100 換算成十進制
第0位 0 * 20= 0
第1位 0 * 21= 0
第2位 1 * 22= 4
第3位 0 * 23= 0
第4位 0 * 24= 0
第5位 1 * 25= 32
第6位 1 * 26= 64
第7位 0 * 27= 0
公式:第N位2(N)
---------------------------
100
用橫式計算為:
0 * 20+ 0 * 21+ 1 * 22+ 0 * 23+ 0 * 24+ 1 * 25+ 1* 26+ 0 * 27= 100
0乘以多少都是0,所以我們也可以直接跳過值為0的位:
1 * 22+ 1 * 25+1*26= 100
2. C語言如何實現十六進制轉換成十進制
C語言實現十六進制轉換成十進制如下:
例如將十六進制數字 9FA8C 轉換成十進制:
9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十進制)。
從右往左看,第1位的位權為 160=1,第2位的位權為 161=16,第3位的位權為 162=256,第4位的位權為 163=4096,第5位的位權為 164=65536 …… 第n位的位權就為 16n-1。
將各個位的數字乘以位權,然後再相加,就得到了十進制形式。
十六進制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方。
所以,在第N(N從0開始)位上,如果是是數 X (X 大於等於0,並且X小於等於 15,即:F)表示的大小為 X * 16的N次方。
再例如:十六進制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十進制)。
(2)c語言十進制的狀態轉換圖擴展閱讀:
C語言10進制轉16進制
把十進制的數不停除以16的余數按從右到左的順序排起來就是16進制,例如:55/16=0餘5例如100 100/16=6餘4 6/16餘6,所以就是64,再例如1000 1000/16=62餘8 62/16=3餘12 3/16餘3所以結果是3C8 //。
對於整數部分,用被除數反復除以2,除第一次外,每次除以2均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。
對於小數部分,採用連續乘以基數2,並依次取出的整數部分,直至結果的小數部分為0為止。
3. C語言中怎樣調用函數將十進制轉換成二進制
1、打開visualC++6.0-文件-新建-文件-C++SourceFile。
4. 用C語言進行十進制和八進制的轉換怎麼做
如果輸入是十進制字元串,輸出是八進制字元串,則用如下dec2oct函數可實現轉換
#include<stdio.h>
intdec2oct(char*dec,char*oct){
intnum=0,i=0,t;
charc;
do{
c=*dec;
if(!c)return0;//出錯了,沒找到10進制數
if(c>='0'&&c<='9')break;//找到十進制數了
elsedec++;
}while(1);
do{
num=num*10+(c-'0');
c=*++dec;
if(!c)break;//沒有其他字元了
if(c>='0'&&c<='9')continue;//還有十進制字元,繼續
elsebreak;//沒有其他十進制字元了,退出
}while(1);
do{
t=num%8;
oct[i]=t+'0';
num=num/8;
if(num==0)break;
i++;
}while(1);
for(t=(i+1)/2;t<=i;t++){
num=oct[t];
oct[t]=oct[i-t];
oct[i-t]=num;
}
oct[i+1]='