c語言二進制數轉十進制
㈠ 用c語言編寫二進制轉換十進制的程序。
1、為了完成進制的轉換,在主函數中聲明了個函數Sum,主要用於將二進制的每一位轉換為十進制後的數相加,返回值就是相加後的和。另外定義了一個數組array[8],用於存放輸入的八位二進制數。
㈡ C語言 二進制數轉化為十進制數
思路:十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。即用2整除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為0時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。
參考代碼:
#include"stdio.h"
voidfun(intn){
if(n==0)return;
fun(n/2);
printf("%d",n%2);
}
intmain(){
intn;
scanf("%d",&n);
fun(n);
return0;
}
/*
運行結果:例如求10的2進制
10
1010
*/
㈢ c語言,將一個二進制數轉換成10進制數輸出
將二進制轉成十進制,按權值展開求和即可。
可以通過以下代碼解決:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[17];
gets(a);
int len,i,sum=0,m,j;
len=strlen(a);
if(len<=16)
{
for(i=0;i<len;i++)
{
m=1;
if(a[i]=='1')
{
for(j=1;j<=len-i-1;j++)
m*=2;
sum+=m;
}
}
printf("%d",sum);
}
return 0;
}
㈣ c語言怎麼將2進制轉化為10進制
#include<stdio.h>
intSum(inta[]);
intpower(intb);
intmain()
{
intarray[8],i;
printf("輸入一個8位二進制數:");
for(i=0;i<8;i++)
{
scanf("%1d",&array[i]);
}
printf("轉換為十進制數後是:%d ",Sum(array));
return0;
}
intSum(inta[])
{
intn,i,sum=0,term;//n為指數,term為每一項的值,如1*(2*2),sum為總和
for(i=0,n=7;i<8;i++,n--)
if(n>=0)
{term=a[i]*power(n);
sum=sum+term;
}
returnsum;
}
intpower(intb)
{
inti=2,j=1;
if(b==0)
i=1;
for(;j<b;j++)
i=2*i;
returni;
}
㈤ C語言 將一個二進制數,轉換為對應的十進制數。
#include<stdio.h>
#include<math.h>
int main()
{
int a[10] = {1,0,0,1,0,1,1,0,0,0};//這里只是預先寫好的二進制數,可以自行改為主動輸入,主要體現過程
int i = 0;
int sum = 0;
for(i = 9;i>=0;i--)//9為數組最後一位
{
sum = sum + a[i];pow(2,abs(i-9));//i- 9 的絕對值判定乘以2 的幾次方
}
printf("%d\n",sum);
return 0;
}
㈥ C語言 怎樣將二進制數轉換成十進制,又怎樣將十進制數轉換成二進制數輸出
#include<stdio.h>
intGetData(char*s,intn){intr=0;
while(*s){r*=n;r+=(*s)-'0';s++;}
returnr;
}
voidConvertData(intx,char*s,intn){intm=0,i,k;
while(x){*s=x%n+'0';x/=n;s++;m++;}
*s=0;
s-=m;for(i=0;i<=m/2;i++){k=s[i];s[i]=s[m-i-1];s[m-i-1]=k;}
}
voidmain(){charstr[256];intx;
printf("請輸入二進制數:");scanf("%s",str);
x=GetData(str,2);printf("二進制%s轉換成十進制是%d ",str,x);
printf("請輸入十進制數:");scanf("%d",&x);
ConvertData(x,str,2);printf("十進制%d轉換成二進制是%s ",x,str);
}
㈦ c語言怎麼將八位二進制數轉換成十進制數
將二進制數轉換成十進制,一般是從字元串轉換成一個整數,按位值乘以權值相累加得到結果。
如:1010=1*2^3+0*2^2+1*2+0
=((((1*2)+0)*2)+1)*2+0
將十進制數轉換成二進制數,採用的原理就是輾轉除2,逆向輸出余數。(windows系統下的itoa函數也是一個不錯的選擇,但diy更有意義)
實現方法:
#include
void swap( char *a, char *b )
{
char t=*a;
*a=*b;
*b=t;
}
char *reverse(char *s,int len)
{
char *b=s, *e=s+len-1;
while( b
評論
0
0
載入更多
㈧ c語言把二進制數轉換成十進制數的程序怎麼寫。
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
㈨ 如何用c語言編寫二進制和十進制之間的轉換
二進制轉十進制
n
為輸入的二進制數,d用來處理該數。
k為標志位,當k為1時表示輸入的數有問題,需要重新輸入。
i為每次分解的個位數;j為二進制的權值;m為累計的十進制和;p為輸入的數的位數,超過10時,該數越界,需要重新輸入,定k=1。
程序如下:
#include
<conio.h>
main()
{
long
int
n,d;
int
k,i,j,m,p;
do
{
k=0;
m=0;j=1;i=0;p=0;
printf("\ninput
an
number
only
includes
0
or
1:");
scanf("%ld",&n);
if(n<0)
k=1;
d=n;
while(d)
{
i=d%10;p++;
if(i>1
||
p>10)
{k=1;break;}
m+=i*j;
j=j*2;
d/=10;
}
}
while(k==1
||
m==0);
printf("\n
the
number
is
%d\n",m);
getch();
}
㈩ 如何使用C語言編寫二進制轉換為十進制的程序
將二進制轉成十進制,按權值展開求和即可。
可以通過以下代碼解決:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char a[17];
gets(a);
int len,i,sum=0,m,j;
len=strlen(a);
if(len<=16)
{
for(i=0;i<len;i++)
{
m=1;
if(a[i]=='1')
{
for(j=1;j<=len-i-1;j++)
m*=2;
sum+=m;
}
}
printf("%d",sum);
}
return 0;
}
(10)c語言二進制數轉十進制擴展閱讀:
我們常用的進制包括:二進制、八進制、十進制與十六進制,它們之間區別在於數運算時是逢幾進一位。比如二進制是逢2進一位,十進制也就是我們常用的0-9是逢10進一位。
十進制轉二進制:十進制數除2取余法,即十進制數除2,余數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。
八進制轉二進制:八進制數通過除2取余法,得到二進制數,對每個八進制為3個二進制,不足時在最左邊補零。
十六進制轉二進制:十六進制數通過除2取余法,得到二進制數,對每個十六進制為4個二進制,不足時在最左邊補零。
負數的進制轉換稍微有些不同。
先把負數寫為其補碼形式(在此不議),然後再根據二進制轉換其它進制的方法進行。
例:要求把-9轉換為八進制形式。則有:
-9的補碼為1111 1111 1111 0111。從後往前三位一劃,不足三位的加0
111---->7
110---->6
111---->7
111---->7
111---->7
001---->1
然後我們將結果按從下往上的順序書寫就是:177767,那麼177767就是十進制數-9的八進制形式。
其實轉化成任意進制都是一樣的。