❶ 如何用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講,正在上傳此視頻教程。