當前位置:首頁 » 編程語言 » 用c語言實現進制轉換
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

用c語言實現進制轉換

發布時間: 2022-07-17 12:53:50

c語言中怎樣調用函數將十進制轉換成二進制

1、打開visualC++6.0-文件-新建-文件-C++SourceFile。

② 用c語言編寫十進制轉化二進制

#include <stdio.h>

void d2n(unsigned long d,int n)

{

if(d>=n)

{

d2n(d/n,n);

}

printf("%c","0123456789ABCDEF"[d%n]);

}

int main()

{

unsigned long d;

int n;

scanf("%lu",&d);

d2n(d,2);

return 0;

}

③ C語言中的進制怎麼轉換啊

關於進制轉換,我覺得挺好玩的不就是幾個公式吧了,
就如我第一次所學的二進制轉換為十進制,十進制轉換為二進制,那樣的類型其實也挺有趣的
比如:一個二進制數轉化為十進制數,如哦我所給的一個二進制數「101101001」我就設十進制數是Z
首先有個公式可套:Z=1*X8+0*X7+1*X6+1*X5+0*X4+1*X3+0*X2+0*X1+1*X0
把只是X換為2,算出來的就是你所得到的此二進制數所對應的十進制數
同理:如八進制數轉換為十進制數就是把X換為8,十六進制數轉換十進制數把X換為16,
至於二進制數轉化為八進制數更有意思;
首先我引進一個例子:這是一個比較特殊的二進制數:111111111111
首先把這組數按三個數劃分一組(從右開始劃分):如,111,111,111,111 於是結果是7777
然後就分別把化為各組的數組轉化為是進制數,最後進把你剛才算出的數按原來的順序排起來,於是得到的結果就是你想要的
那十六進制就是把數組中的每四個劃分一組(從右開始劃分的)
如111111111111劃分結果為1111,1111,1111, 方法與上面一樣,於是它的結果是fff

關於十進制轉化二進制,八進制和十六進制,方法都是一樣的
同二進制方法雷同。

④ 如何用C語言將一個十六進制數字轉換為十進制

需要准備的材料分別有:電腦、C語言編譯器。

1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。

⑤ 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(十進制)。



(5)用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為止。

⑥ C語言中如何用演算法實現進制間的轉化

C語言中實現10進制轉換為任意進制的過程為:

  • 定義數組int rs[32],保存轉換後的數據,整數的轉換結果最多32位(4位元組*8位)

  • 定義一個數組char map[]={'0','1','2','3',...,'9','A','B',...'F'},完成相應數值對應的轉換後的字元

  • 輸入10進制數(整數)num

  • 轉入轉換進制基數(2-16)ind

  • 循環對num進行模ind運算,得到余數存儲到數組rs中

  • num縮小ind倍

  • 當num為0時結束循環

  • 反向輸出數組rs中對應的各元素對應的map字元,得到轉換結果

參考代碼:

#include<stdio.h>
intmain()
{
charmap[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
inti,c[32],num,ind;
do{printf("inputnum:");scanf("%d",&num);}while(num<0);
do{printf("inputind:");scanf("%d",&ind);}while(ind>16||ind<2);
i=0;
do{
c[i++]=num%ind;
num/=ind;
}while(num!=0);
for(i--;i>=0;i--)
printf("%c",map[c[i]]);
printf(" ");
return0;
}

運行結果:

input num: 100

input ind: 2

1100100


input num: 100

input ind: 8

144


input num: 100

input ind: 16

64

⑦ C語言中進制如何轉換

#include
<stdio.h>
int
main(void)
{
int
a8,
b10,
c16;/*a8,b10,c16分別代表八進制數,十進制數和十六進制數*/
scanf("%o%d%x",
&a8,
&b10,
&c16);
printf("%o,%d,%x\n",
a8,a8,a8);
printf("%o,%d,%x\n",
b10,b10,b10);
printf("%o,%d,%x\n",
c16,c16,c16);
}
要重復,添加循環就OK了。
這里簡單的實現你的輸入和輸出功能,並沒有真正從運算規則上去進行轉換,你也沒做這樣的要求,不知道是不是你想要的結果。

⑧ C語言進制轉換

支持zpfloveyfy的分析,程序風格也很好。
我在這給個數制轉換的公式:
十進制數N和其他d進制數的轉換基於以下公式:
N
=
(N
div
d)
*
d
+
N
mod
d;
其中:div為整除,mod為求余。
例如將10進制1348轉化成2504,運算過程如下:
N
Ndiv8
Nmod8
1348
168
4
168
21
0
21
2
5
2
0
2
看起來有點亂,因為這里會把原來的格式給打亂。
由最後一列4052可以看出,正好是結果2504的倒數,所以用棧來實現它是最理想不過的了。