当前位置:首页 » 操作系统 » 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倍,以后依次类推。

热点内容
graham凸包算法 发布:2024-09-27 07:11:59 浏览:93
写小说的怎么上传 发布:2024-09-27 07:10:30 浏览:4
国内的服务器可以搭建v2吗 发布:2024-09-27 07:09:34 浏览:994
指定数据库所在服务器ip怎么找 发布:2024-09-27 06:33:54 浏览:326
linux安装google 发布:2024-09-27 06:33:46 浏览:107
euclid算法 发布:2024-09-27 06:20:22 浏览:642
java银行账户类 发布:2024-09-27 06:20:12 浏览:908
linux内核编译重新 发布:2024-09-27 06:18:45 浏览:461
解压拓展项目 发布:2024-09-27 05:43:16 浏览:192
编译原理上升的箭头 发布:2024-09-27 05:25:24 浏览:223