當前位置:首頁 » 操作系統 » c十進制轉二進制演算法

c十進制轉二進制演算法

發布時間: 2022-04-01 08:20:07

c語言如何寫十進制轉二進制的程序

#include <stdio.h>
void trans(int x)
{
int a[30];
int i=0,rem;
do{
rem=x%2;x=x/2;
a[i]=rem;
i++;
}while(x!=0);
while(i>0)
printf("%d",a[--i]);
printf("\n");
}
void main()
{
int d;
printf("請輸入一個十進制的正整數:\n");
do scanf("%d",&d);while(d<0);
trans(d);
}

㈡ 用c語言編程,實現十進制和二進制的相互轉化。

#include<stdio.h>

int getnumber(char *s,int *n)
{ char *p=s;
int k,m;
*n=0; m=1;
while ( *p != ')' ) p++;
k=atoi(p+1); p--;
if ( k==2 || k==10 )
{ while ( *p!='(' ) { (*n)+=((*p)-'0')*m; m*=k; p--; }
return k;
}
else return 0;
}

void exchange(char *s,int n,int k)
{ char str[80],str1[80];
int e,m,i;
e=( k==2 )?(10):(2); m=0;
while ( n )
{ str[m]=n%e+'0'; n/=e; m++;
}
for ( i=0;i<m;i++ ) str1[i]=str[m-i-1];
str1[i]=0;
sprintf(s,"(%s)%d",str1,e);
}

void main()

{ char str[256],str1[256];
int n,k;
scanf("%s",str);
k=getnumber(str,&n);
if ( k )
{ exchange(str1,n,k);
printf("%s ==> %s ",str,str1);
}

}

㈢ 求一個C語言的十進制轉二進制方法

void main()
{
int d, i;

scanf("%d", &e);

printf("%d的二進製表達式是:");
if(d<0)
{
printf("-"); // 列印符號
d=~d+1; // 求反加一 (得到的是正整數表達式)
}
for(i=30; i>0; i--)
{
printf("%d", (d>>i)&1); //保留最低位,最高位是符號位,經過上邊的變化一定是0,做移位操作,獲取2進制的相應比特位。&1 屏蔽掉其他位
}
printf("b\n");
}

㈣ c語言編程,將十進制整數轉化為二進制

首先需要明確十進制轉為二進制的演算法:將所需轉化的數除以2,所得余數為k1,將所得商再除以2,所得余數為k2…...重復步驟直到商為0;讀數時從最後一個余數讀起,即kn,k(n-1)…k2,k1;所得數便是轉化成的二進制數(除二取余法)

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

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

㈥ c語言怎麼將十進制轉化成二進制

#include <stdio.h>

void main()

{

//進制轉換函數的聲明

int transfer(int x);

int x;

printf("請輸入一個十進制數:");

scanf("%d",&x);

printf("轉換成二進制數是:%d ",transfer(x));

}

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;

}

89÷2 ……1

44÷2 ……0

22÷2 ……0

11÷2 ……1

5÷2 ……1

2÷2 ……0

1

十進制小數轉二進制數:「乘以2取整,順序排列」(乘2取整法)

網路-二進制

㈦ 用C語言編程實現十進制轉化為二進制

有兩種計算方法,運行的結果是完全相同的:
一是採用位運算的方法:
#include
int main()
{ int n,i;
scanf("%d",&n);
for(i=31;i>=0;i--)
printf("%d",(n&(1<<i))!=0);
return 0;
}
二是採用樓主指定的方法:
#include
int a[32];
int main()
{ int n,i,k=0;
scanf("%d",&n);
if(n<0)k=1;
for(i=31;n;i--)
{a[i]=n%2;
n/=2;
}
if(k==1)
{for(i=31;i>=0;i--)
a[i]=1+a[i];
for(i=31;a[i];i--)
a[i]=0;
a[i]=1;
}
for(i=0;i<32;i++)
printf("%d",a[i]);
return 0;
}

㈧ C語言十進制轉二進制

你的
for(x=1;n/2>=1;x++)
{
b=n%2;
a[x]=b;
n=(n-b)/2;
}
這里就錯了,思路都錯的,你下面保存了余數後,應該更新n的值啊,n應該是原來的縮小兩倍啊!還有條件上不能用 n/2,應該是n>0 !如果按照你的,你用1或用其他數試一下,直接大腦里按照執行步驟走,就可以發現問題了。按照你的思路幫你改了一下代碼,如下:
#include<stdio.h>
#include<string.h>

int main(void)
{
int n = 0, b = 0, i = 0, x = 0, a[30] = {0};

scanf("%d",&n);
printf("%11d",n);
printf("-->");

if(n < 0)
{
n = -n;
printf("n = -%d\n", n);
}
else
{
printf("n = %d\n", n);
}

for(x = 0; n > 0; x++) //這里是用來把十進制轉化為二進制的核心
{
a[x] = n % 2;
n /= 2;
}
b = i = x - 1; //對二取證為0後表示已經轉化結束,但方面執行了條件三,所以這里需要減1
for(x = 0; i > x; x++, i--) //把數組里的元素倒一下,才是第一位為二進制的最高位
{
a[x] ^= a[i];
a[i] ^= a[x];
a[x] ^= a[i];
}

for(i = 0; i <= b; i++)
{
printf("%d", a[i]);
}
printf("B\n");

return 0;
}

㈨ c語言十進制轉二進制演算法問題

#include
<stdio.h>
void
main()
{
int
b,i,c=0,a[30];
scanf("%d",&b);
while(b!=0)
{
i=b%2;
a[c]=i;
c++;
b=b/2;
}
for(;c>=1;c--)
{
printf("%d",a[c-1]);
}
printf("\n");
}
這回對了
!你原來的錯誤在
第一個for循環
c的值是數組的長度多一
因為判斷到最後一次時
c又執行一次加一
第二個for循環里c的值又多減了一次
樓主請注意for循環的條件
一定要想清楚
你原來的結果
前面的數就是那個a[C+1]里的隨機數

㈩ C語言 將十進制數轉化為二進制數 程序代碼

#include <stdio.h>

void main()
{
int a;
scanf(\"%d\",&a);//輸入一個10進制數。

int result=0;//存儲a的二進制結果。
int p=1;//p=1表示個位數

do
{
int b=a%2;//b是余數,第一個余數是二進制的個位。
result=result+p*b;
p=p*10;//*10表示下個是10位數。
a=a/2;
}while(a);

printf(\"\\n%d\\n\",result);
}

程序在vc6.0下編譯通過可以直接用,你自己看看吧,思路是a%2的結果是二進制的個位數,(a/2)%2的結果是二進制的十位數所以p擴大10倍,以後依次類推。

熱點內容
c語言和vc的區別 發布:2024-11-15 16:19:23 瀏覽:117
linux是免費的嗎 發布:2024-11-15 15:53:44 瀏覽:616
多控存儲 發布:2024-11-15 15:52:42 瀏覽:282
一年級數學分解演算法 發布:2024-11-15 15:41:08 瀏覽:410
安卓個人熱點怎麼分享 發布:2024-11-15 15:40:16 瀏覽:263
墊錢解壓 發布:2024-11-15 15:38:54 瀏覽:335
miui4相當於安卓什麼系統 發布:2024-11-15 15:37:54 瀏覽:708
rc4android 發布:2024-11-15 15:27:25 瀏覽:741
電腦伺服器機箱圖片 發布:2024-11-15 15:27:18 瀏覽:114
網頁緩存文件提取 發布:2024-11-15 15:24:42 瀏覽:144