1. c語言中16進制轉換為十進制
最簡單的使用scanf()函數和printf()函數進行格式轉換,以16進制格式輸入,再以10進制格式輸出。
程序代碼如下:
#include<stdio.h>
int main()
{
int a=0;
int i=0;
scanf("%x",&a);
printf("%d",a);
return 0;
}
運行結果:
(1)c語言中轉化十進制擴展閱讀:
scanf函數與printf函數的用法很像,都是以格式化的形式進行操作,例如上述程序中scanf("%x", &a);就是將輸入數據以十六進制格式存儲到變數a中。
"%x"是將字元串A23CD以十六進制形式輸入a中,如果將"%x"換成為"%d"的話,就是將字元串A23CD以十進制形式輸入a中,這顯然是錯誤的,因為將A23CD轉換為十進制的時候,無法解析A,CD等字元,所以得出的結果就是錯誤的。
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語言將一個十六進制數字轉換為十進制
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
4. C語言如何將一個數字組成的字元串轉變成十進制數
辦法很多,提供三種供參考。
一、直接使用庫函數atoi將數字字元串轉換成十進制整數。代碼如下:
#include"stdio.h"
#include"stdlib.h"//調用庫函數atoi要包含這個文件
intmain(intargc,char*argv[]){
chara[]="478167831";
printf("%d ",atoi(a));//直接調用atoi將a轉換為十進制整數
return0;
}
二、用庫函數sscanf直接將數組中的數字字元串讀入十進制整型變數。代碼如下:
#include"stdio.h"
intmain(intargc,char*argv[]){
chara[]="478167831";
intx;
sscanf(a,"%d",&x);//調用sscanf,讀入時自動轉換為int型並由%d控制以十進制賦給變數x
printf("%d ",x);//輸出
return0;
}
三、自行編寫轉換代碼:
#include"stdio.h"
intmain(intargc,char*argv[]){
chara[]="478167831";
intx,i;
for(x=i=0;a[i];(x*=10)+=a[i++]-'0');//字元與數字的關系是"字元值-'0'==同名數字"
printf("%d ",x);//輸出
return0;
}
上述三代碼的輸出結果如下圖:
5. C語言中十進制和二進制怎麼轉換
#include
#include
#include
using namespace std;
string zhuanhuan(int num,int base)
{
string digitChar="0123456789" ,numStr= "";
stackstk;
do{
stk.push(digitChar[num%base]);
num /= base;
}while(num!=0);
while(!stk.empty())
{
numStr += stk.top();
stk.pop();
}
return numStr;
}
int main()
{
int m , n;
cout<< "請輸入要轉換的數字:" ;
cin >> m;
cout<< "請輸入要轉換的進制:";
cin >> n;
cout << "將"<< m << "轉換成" << n << "進制後為:" ;
cout << zhuanhuan(m,n) << endl;;
system("pause");
return 0;
}
以上代碼能實現任意進制之間的轉換!希望對你有幫助!!
6. c語言十六進制轉十進制方法
可以用<stdlib.h> 中的char*_itoa(intvalue,char*string,intradix);把整型轉換為其他進制的字元串參考代碼:
int main(){int a=110;char p;_itoa(110,p,16); //16表示16進制,還可以用2、8、10printf("%s",p);return 0;}
GCC,GNU組織開發的開源免費的編譯器,MinGW,Windows操作系統下的GCC,Clang,開源的BSD協議的基於LLVM的編譯器。
(6)c語言中轉化十進制擴展閱讀:
運算符號:
比較特別的是,比特右移(>>)運算符可以是算術(左端補最高有效位)或是邏輯(左端補 0)位移。例如,將 11100011 右移 3 比特,算術右移後成為 11111100,邏輯右移則為 00011100。因算術比特右移較適於處理帶負號整數,所以幾乎所有的編譯器都是算術比特右移。
運算符的優先順序從高到低大致是:單目運算符、算術運算符、關系運算符、邏輯運算符、條件運算符、賦值運算符(=)和逗號運算符。
7. 用c語言怎麼寫 實現2進制轉成10進制
按照樓主的意思,應該是2機制格式表示的字元串,轉成10進制格式的字元串
(否則,都是數值的話,不需要轉。把它看成2進制或10進制,都可以)
所以,該功能分兩部分
1,把2進製表示的字元串,轉換成數值
2,把數值轉換成10進製表示的字元串
8. c語言十進制轉換
十進制的任意轉換
#include
#include
int
main()
{
int
a,b,c,n
=
0,m[40];
printf("請輸入你想算得數
=__\b\b");
scanf
("%d",&a);
printf("
請輸入你想算的進制
=__\b\b");
scanf
("%d",&b);
while
(a
!=
0)
{
n
++
;
c
=
a
%
b;
m[n]
=
c;
a
=
a
/
b;
}
for
(a
=
n;
a
>=
1;a--)
printf
("%d",m[a]);
return
0;
}