❶ 如何用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>
intmain()
{
charin[10],out[10];
scanf("%s",in);
if(strlen(in)<8||in[0]==0)printf("%s ",in);
else
{
inti;
out[0]='1';
for(i=1;i<8;i++)
{
if(in[i]=='0')
out[i]='1';
elseout[i]='0';
}
for(i=7;i>0;i--)
{
if(out[i]=='0')
{
out[i]='1';
break;
}
elseout[i]='0';
}
out[8]=0;
printf("%s ",out);
}
}
❸ 用C语言编写二进制转换十进制的程序。
一下两个程序均在VC在编译通过。
/*
如果这个二进制数比较大的话,
大到只能用数组储存这个二进制数,
当然如果大到转化成10进制int存不下的情况那另当别论
*/
#include<stdio.h>
#include<string.h>
int
main()
{
char
a[33];
int
i,
num
=
0;
scanf("%s",
a);
for(i=strlen(a)-1;
i>=0;
i--)
{
num*=2;
/*如果用位运算的话,速度会更快*/
num+=a[i]-'0';
}
printf("%d\n",
num);
return
0;
}
/*
如果这个二进制数的位数不超过10位的话
可用这个程序
*/
#include<stdio.h>
int
main()
{
int
num
=
0,
a,
j=1;
scanf("%d",
&a);
while(a)
{
num
+=
(a%10)
*
j;
a
/=
10;
j
*=
2;
}
printf("%d\n",
num);
return
0;
}
❹ c语言二进制数转变
bit1:清0: n &= ~ (1u << 1);
bit2置1 : n |= (1u << 2);
其中,bit0, bit1, bit2, ... 指的是从低到高各个位。
文字教程请看邵发的《C/C++学习指南》的第6章,里面的示例及详细解释。视频教程请看优酷上的《C/++学习指南》第03-01讲,正在上传此视频教程。