編程進制轉換
㈠ 用編程怎麼把十進制的變成n進制
1. c語言十進制轉換為N進制的程序
代碼如下:(可以輸出20位數)
#include<stdio.h>
void transfer(int m,int change)
{
int aa[20],j,saveM=m;
for(j=0;m!=0;j++)
{
aa[j]=m%change;
m=m/change;
}
printf("十進制數%d的%d進制形式是:\n",saveM,change);
for(;j!=0;j--)
printf("%d ",aa[j-1]); 注意這空是填aa[j-1],而不是aa[j],因為上面那個循環進行到最後一步時,j++還是會運行一次,但是此時並沒有給aa[j]賦值,因為循環結束
}
main()
{
int n,c;
printf("請輸入一個整數\n");
scanf("%d",&n);
printf("該整數是十進制數,你想將它轉化成幾進制數呢?\n");
getchar();
scanf("%d",&c);
transfer(n,c);
}
功能說明:
該函數可以將任意的十進制數轉化成任意的N進制數。轉化後的結果,每兩位數之間用一個空格隔開。
2. c語言編衡滲寫一個程序,將十進制整數n 轉換成二進制數
#include <stdio.h>
int transfer(int x)
{
int p=1,y=0,yushu;
while(1)
{
yushu=x%2;
x/=2;
y+=yushu*p;
p*=10;
if(x<2)
{
y+=x*p;
break;
}
}
return y;
}
void main()
{
進制轉換函數的聲明
int transfer(int x);
int x;
printf("請輸入一個十進制數:咐卜脊");
scanf("%d",&x);
printf("轉換成二進制數是:%d\n",transfer(x));
}
(1)編程進制轉換擴展閱讀:
c語言書寫規則弊氏:
1.一個說明或一個語句佔一行。
2.用{} 括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。
3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。
參考資料:
網路-c語言
3. C語言中把10進制轉化n進制怎麼轉
#include<iostream>
#include<cstdio>
using namespace std;
char b[40];
char chg(int n){將數轉換成字元
if(n<10)
return n+'0';
return n-10+'a';
}
int main(){
int a,n,len;a為十進制數,n為轉換成的進制數
int t;
cin>>a>>n;
len=0;
while(a){
b[++len]=chg(a%n);
a/=n;
}
for(int i=len;i;i--)
printf("%c",b[i]);
cout<<endl;
system("pause");
return 0;
}
你的問題好像是有多組數據,沒注意到,就自己修改吧
4. 怎麼用編程把十進制轉化成二進制
class Program
{
static void Main(string[] args)
{
int shi;用來保存十進制數
Console.WriteLine("******** 十進制轉二進制 ********\n");
Console.Write("請輸入十進制整數:");
從控制台讀取十進制整數
shi = Convert.ToInt32(Console.ReadLine());
將輸入的十進制數轉換為二進制字元串
string er = Convert.ToString(shi, 2);
輸出二進制字元串
Console.WriteLine("二進制為:"+er);
Console.ReadLine();
}
}
5. n進制化十進制怎樣轉換
1、十進制轉N進制
十進制轉N進制的方法是「除N取余,逆序排列」,就是用N除去要進行轉換的十進制數,得到一個商和余數,再用N除以商得到又一個商和余數,一直繼續下去,直到商為0,將得到的所有餘數逆序排列,得到的就是N進制數了。
例:將十進制數37轉為二進制,計算過程如下:
將余數逆序排列,得到二進制結果100101。
2、N進制轉十進制
N進制轉十進制的方法是:按權相加法。即把N進制數先寫成加權系數展開式,然後再按十進制的加法規則求和,得到對應十進制數。
例:將八進制數轉為十進制,計算過程如下:
(3567)8=(3*8*8*8+5*8*8+6*8+7)10
=(512+320+48+7)10
=(887)10
(1)編程進制轉換擴展閱讀:
1、負數的進制轉換
先把負數寫為其補碼形式,然後再根據二進制轉換其它進制的方法進行。
例:要求把-9轉換為八進制形式。則有:
-9的補碼為1111 1111 1111 0111。從後往前三位一劃,不足三位的加0
111---->7
110---->6
111---->7
111---->7
111---->7
001---->1
然後將結果按從下往上的順序書寫就是:177767,那麼177767就是十進制數-9的八進制形式。
6. 如何用C語言將N進制數轉化為十進制
這是我之前寫的一個程序。2~16進制正整數,若是17進制或更高也可以,但怎麼表示17,'g'還是其他字元呢?需要的話也可以修改。
#include
#include
#include
int N2Str(int value,int N,char *str)
{
char temp[10],*Bits="0123456789abcdef";
int Len;
if(value16||str==NULL) return 0;
if(value>=N)
{
if(!N2Str(value/N,N,str)) return 0;
}
Len=strlen(str);
str[Len]=Bits[value%N];
str[Len+1]='\0';
return 1;
}
int M2N(int M,char *MStr,int N,char *NStr)
{
int value=0,bit;
if(M16||MStr==NULL||N16||NStr==NULL) return 0;
while(*MStr)
{
value*=M;
if(*MStr>='0'&&*MStrelse if(*MStr>='a'&&*MStrelse if(*MStr>='A'&&*MStrif(bit>=M) return 0;
value+=bit;
MStr++;
}
*NStr='\0';
N2Str(value,N,NStr);
return 1;
}
int main(void)
{
char *in="123456";
char out[50];
if(M2N(16,in,10,out))
printf("%s->%s\n",in,out);
else
printf("illegal input data\n");
system("pause");
return 0;
}
7. 講一個十進制數轉換成n進制數 c程序 看看這段代碼怎麼樣 可以用,就
代碼很好噢!但沒有必要把n>10和n<=10分開處理,核心部分有下面一部分就可以了。至於效率,用指針處理數組要比用下標處理數組效率高一些,用自賦值運算符比一般運算符高一些。但這代碼太小,用了也分辨不出來高下……下面是完全按你的思路改過的,你對照看看——
void main(void){
int *p,b[10],m,n;
printf("請輸入一個十進制數:\n");
scanf("%d",&m);
printf("請輸入你要將該十進制轉換成多少進制數:\n");
scanf("%d",&n);
printf("%d轉換成%d進制數為\n",m,n);
p=b;
while(m>0){
*p++ = m%n;
m/=n;
}
for(p--;p>=b;p--)
if(*p>9) printf("%c",*p+87);
else printf("%d",*p);
printf("\n");
}
8. 編寫一個將N進制轉換成十進制的調用程序
有點亂 win-tc寫的 僅供參考#include "Stdio.h"#include "Conio.h"#include "Math.h"int sum=0;int w=0;sum 表示最後的轉換結果w只是個過度參數 表示數據位數的增加int main(void){ test(12,325); printf("\n%d",sum); getch(); return 0;}int test(int n,int xx){n 表示以前的進制 xx表示要轉換的數 int i=xx%n; sum=sum+i*(int)pow(10,w); w++; if(xx==0)return; xx=xx/n; test(n,xx);}。
9. 十進制數N進制數據的轉換 用c語言編寫 馬上就要交了幫幫忙
int main(void)
{
int result[20];
int n,num,i;
scanf("%d",&num);要轉換的數
scanf("%d",&n);幾進制
for(i=0;num>0;i++)
{
result[i]=num%n;
num=num/n;
}
printf("結果:");
while(i--)printf("%d",result[i]);
return 0;
}
㈡ 計算機編程里的進制該怎麼表示,計算,轉換啊
計算機中按照不同的分類可以分成十進制、八進制、十六進制和二進制。轉換法則表示:1. 十 -----> 二 給你一個十進制,比如:6,如果將它轉換成二進制數呢? 10進制數轉換成二進制數,這是一個連續除2的過程: 把要轉換的數,除以2,得到商和余數, 將商繼續除以2,直到商為0。最後將所有餘數倒序排列,得到數就是轉換結果。 聽起來有些糊塗?我們結合例子來說明。比如要轉換6為二進制數。 「把要轉換的數,除以2,得到商和余數」。 那麼: 十轉二示意圖 要轉換的數是6, 6 ÷ 2,得到商是3,余數是0。 「將商繼續除以2,直到商為0……」 現在商是3,還不是0,所以繼續除以2。 那就: 3 ÷ 2, 得到商是1,余數是1。 「將商繼續除以2,直到商為0……」 現在商是1,還不是0,所以繼續除以2。 那就: 1 ÷ 2, 得到商是0,余數是1 「將商繼續除以2,直到商為0……最後將所有餘數倒序排列」 好極!現在商已經是0。 我們三次計算依次得到余數分別是:0、1、1,將所有餘數倒序排列,那就是:110了! 6轉換成二進制,結果是110。 把上面的一段改成用表格來表示,則為: 被除數 計算過程 商 余數 6 6/2 3 0 3 3/2 1 1 1 1/2 0 1 (在計算機中,÷用 / 來表示) 2. 二 ----> 十 二進制數轉換為十進制數 二進制數第0位的權值是2的0次方,第1位的權值是2的1次方…… 所以,設有一個二進制數:0110 0100,轉換為10進制為: 下面是豎式: 0110 0100 換算成 十進制 " ^ " 為次方 第0位 0 * 2^0 = 0 第1位 0 * 2^1 = 0 第2位 1 * 2^2 = 4 第3位 0 * 2^3 = 0 第4位 0 * 2^4 = 0 第5位 1 * 2^5 = 32 第6位 1 * 2^6 = 64 第7位 0 * 2^7 = 0 + --------------------------- 100 用橫式計算為: 0 * 2 ^ 0 + 0 * 2 ^ 1 + 1 * 2 ^ 2 + 1 * 2 ^ 3 + 0 * 2 ^ 4 + 1 * 2 ^ 5 + 1 * 2 ^ 6 + 0 * 2 ^ 7 = 100 0乘以多少都是0,所以我們也可以直接跳過值為0的位: 1 * 2 ^ 2 + 1 * 2 ^ 3 + 1 * 2 ^ 5 + 1 * 2 ^ 6 = 100 3. 十 ----> 八 10進制數轉換成8進制的方法,和轉換為2進制的方法類似,唯一變化:除數由2變成8。 來看一個例子,如何將十進制數120轉換成八進制數。 用表格表示: 被除數 計算過程 商 余數 120 120/8 15 0 15 15/8 1 7 1 1/8 0 1 120轉換為8進制,結果為:170。 4. 八 ----> 十 八進制就是逢8進1。 八進制數採用 0~7這八數來表達一個數。 八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方…… 所以,設有一個八進制數:1507,轉換為十進制為: 用豎式表示: 1507換算成十進制。 第0位 7 * 8^0 = 7 第1位 0 * 8^1 = 0 第2位 5 * 8^2 = 320 第3位 1 * 8^3 = 512 -------------------------- 839 同樣,我們也可以用橫式直接計算: 7 * 8^0 + 0 * 8^1 + 5 * 8^2 + 1 * 8^3 = 839 結果是,八進制數 1507 轉換成十進制數為 839 5. 十 ----> 十六 10進制數轉換成16進制的方法,和轉換為2進制的方法類似,唯一變化:除數由2變成16。 同樣是120,轉換成16進制則為: 被除數 計算過程 商 余數 120 120/16 7 8 7 7/16 0 7 120轉換為16進制,結果為:78。 6. 十六----> 十 16進制就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。 十六進制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方…… 所以,在第N(N從0開始)位上,如果是是數 X (X 大於等於0,並且X小於等於 15,即:F)表示的大小為 X * 16的N次方。 假設有一個十六進數 2AF5, 那麼如何換算成10進制呢? 用豎式計算: 2AF5換算成10進制: 第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第2位: A * 16^2 = 2560 第3位: 2 * 16^3 = 8192 + ------------------------------------- 10997 直接計算就是: 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997 (別忘了,在上面的計算中,A表示10,而F表示15) 現在可以看出,所有進制換算成10進制,關鍵在於各自的權值不同。 假設有人問你,十進數 1234 為什麼是 一千二百三十四?你盡可以給他這么一個算式: 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4 * 10^0 7. 二 ----> 八 (11001.101)(二) 整數部分: 從後往前每三位一組,缺位處用0填補,然後按十進制方法進行轉化, 則有: 001=1 011=3 然後我們將結果按從下往上的順序書寫就是:31,那麼這個31就是二進制11001的八進制形式 小數部分: 從前往後每三位一組,缺位處用0填補,然後按十進制方法進行轉化, 則有: 101=5 然後我們將結果部分按從上往下的順序書寫就是:5,那麼這個5就是二進制0.101的八進制形式 所以:(11001.101)(二)=(31.5)(八) 8. 八 ----> 二 (31.5)(八) 整數部分:從後往前每一位按十進制轉化方式轉化為三位二進制數,缺位處用0補充 則有: 1---->1---->001 3---->11 然後我們將結果按從下往上的順序書寫就是:11001,那麼這個11001就是八進制31的二進制形式 說明,關於十進制的轉化方式我這里就不再說了,上一篇文章我已經講解了! 小數部分:從前往後每一位按十進制轉化方式轉化為三位二進制數,缺位處用0補充 則有: 5---->101 然後我們將結果按從下往上的順序書寫就是:101,那麼這個101就是八進制5的二進制形式 所以:(31.5)(八)=(11001.101)(二) 9. 十六 ----> 二 ;二 ----> 十六 二進制和十六進制的互相轉換比較重要。不過這二者的轉換卻不用計算,每個C,C++程序員都能做到看見二進制數,直接就能轉換為十六進制數,反之亦然。 我們也一樣,只要學完這一小節,就能做到。 首先我們來看一個二進制數:1111,它是多少呢? 你可能還要這樣計算:1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 1 * 2^3 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。 然而,由於1111才4位,所以我們必須直接記住它每一位的權值,並且是從高位往低位記,:8、4、2、1。即,最高位的權值為2^3 = 8,然後依次是 2^2 = 4,2^1=2, 2^0 = 1。 記住8421,對於任意一個4位的二進制數,我們都可以很快算出它對應的10進制值。 下面列出四位二進制數 xxxx 所有可能的值(中間略過部分) 僅4位的2進制數 快速計算方法 十進制值 十六進值 1111 = 8 + 4 + 2 + 1 = 15 F 1110 = 8 + 4 + 2 + 0 = 14 E 1101 = 8 + 4 + 0 + 1 = 13 D 1100 = 8 + 4 + 0 + 0 = 12 C 1011 = 8 + 0 + 2+ 1 = 11 B 1010 = 8 + 0 + 2 + 0 = 10 A 1001 = 8 + 0 + 0 + 1 = 9 9 .... 0001 = 0 + 0 + 0 + 1 = 1 1 0000 = 0 + 0 + 0 + 0 = 0 0 二進制數要轉換為十六進制,就是以4位一段,分別轉換為十六進制。 如(上行為二制數,下面為對應的十六進制): 1111 1101 , 1010 0101 , 1001 1011 F D , A 5 , 9 B 反過來,當我們看到 FD時,如何迅速將它轉換為二進制數呢? 先轉換F: 看到F,我們需知道它是15(可能你還不熟悉A~F這五個數),然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全為1 :1111。 接著轉換 D: 看到D,知道它是13,13如何用8421湊呢?應該是:8 + 4 + 1,即:1101。 所以,FD轉換為二進制數,為: 1111 1011 由於十六進制轉換成二進制相當直接,所以,我們需要將一個十進制數轉換成2進制數時,也可以先轉換成16進制,然後再轉換成2進制。 比如,十進制數 1234轉換成二制數,如果要一直除以2,直接得到2進制數,需要計算較多次數。所以我們可以先除以16,得到16進制數: 被除數 計算過程 商 余數 1234 1234/16 77 2 77 77/16 4 13 (D) 4 4/16 0 4 結果16進制為: 0x4D2 然後我們可直接寫出0x4D2的二進制形式: 0100 1101 0010。 其中對映關系為: 0100 -- 4 1101 -- D 0010 -- 2 同樣,如果一個二進制數很長,我們需要將它轉換成10進制數時,除了前面學過的方法是,我們還可以先將這個二進制轉換成16進制,然後再轉換為10進制。 下面舉例一個int類型的二進制數: 01101101 11100101 10101111 00011011 我們按四位一組轉換為16進制: 6D E5 AF 1B
㈢ 計算機編程里的2進制和16進制應該怎麼算啊應該怎麼轉換啊
對於初學者來說,二
八
十六進制之間的換算會顯得有些繁瑣,不過可以以十進制為中介來換算,首先要學會二
八
十六進制分別與十進制的互化方法:
1、轉換為十進制
二進制化為十進制
例:將二進制數101.01轉換成十進制數
(101.01)2
=
1×2^2
+
0×2^1
+
1×2^0
+
0×2^(-1)
+
1×2^(-2)
=
(5.25)10
八進制化為十進制
例:將八進制數12.6轉換成十進制數
(12.6)8
=
1×8^1
+
2×8^0
+
6×8^(-1)
=
(10.75)10
十六進制化為十進制
例:將十六進制數2AB.6轉換成十進制數:
(2AB.6)16
=
2×16^2
+
10×16^1
+
11×16^0
+
6×16^(-1)
=
(683.375)10
2、十進制化二,八,十六進制(三種方法類似)
十進制化二進制
規則:除二取余,直到商為零為止,再將所有餘數倒排。
例:將十進制數86轉化為二進制
2
|
86……
餘0
2
|
43……
餘1
2
|
21……
餘1
2
|
10……
餘0
2
|
5
……
餘1
2
|
2
……
餘0
2
|
1
……
餘1
結果:(86)10
=
(1010110)2
十進制化八進制
方法:採用除8取余法。
例:將十進制數115轉化為八進制數
8|
115……
3
8|
14
……
6
8|
1
……
1
結果:(115)10
=
(163)8
十進制化十六進制
方法:採用除16取余法。
例:將十進制數115轉化為八進制數
16|
115……
3
16|
7
……
7
結果:(115)10
=
(73)16
至於二,八,十六進制之間的轉換,可以通過先化成十進制數,再進行轉化,這樣比較簡單,不需要記很多。
㈣ c語言編程,如何將十進制轉化為2進制
c語言編程將十進制轉化為2進制可按手工轉換規則進行程序轉換。
整數佔四個位元組,每位元組8位,共32位。所以,可以定義一個32位的數組來存儲轉換結果。
循環將整數進行除2取余數,余數存儲到數組中。
當整數整除為0時,結束循環
逆序輸出數組,得到轉換結果
參考代碼:
#include<stdio.h>
voidmain()
{
intc[32],i=0,n;
scanf("%d",&n);//輸入待轉換整數n
do{
c[i++]=n%2;
n/=2;
}while(n!=0);
for(i--;i>=0;i--)
printf("%d",c[i]);
printf(" ");
}
㈤ 一道c語言編程題,將十進制轉換為二進制
1、打開visual C++ 6.0-文件-新建-文件-C++ Source File。
㈥ C語言編程:八進制轉換為十進制
#include<stdio.h>
void main()
{
char *p,s[6];int n;
p=s;
gets(p);
n=0;
while(*(p)!='