可以给我一个把十进制数字转换成二进制数字的c语言源代码吗
发布网友
发布时间:2022-05-16 23:48
我来回答
共3个回答
热心网友
时间:2023-08-03 00:47
程序的主要思想是:
按位与的特点是,是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。
也就是说,按位与运算有3个对象,分别是两个参与运算的两个数和运算有的结果。这个和小学学习的普通加法一样。如:a+b=c,,a,b,c分别是3个对象。同样的,与运算也是一一样的意思:a & b = c.
只不过是与的意思和加法的意思不一样而已。
根据题目要求,我们已经得到了一个参与运算的数据,就是要转换的数,现在我们需要得到转换后的数,根据与运算规则,我们构造一个数,分别和待转换的数进行与运算,得到每一位的值,要么是0,要么是1。
程序如下:
#include <stdio.h>
int main(void)
{
const int iTimes=sizeof(int) * 8;
int iMask=1;
int x = 12345; //这个就是要转换的数
int x2[iTimes];
int i;
for( i=0 ; i<iTimes ; i++ ){
x2[i]=x & iMask;
iMask = iMask << 1;
// printf("%d",iMask);
}
printf("\n(%d)d=",x);
for( i=iTimes -1 ; i >=0 ; i-- ){
printf("%d",x2[i] ? 1 : 0 );
}
return 0;
}
热心网友
时间:2023-08-03 00:47
给你个十进制转八进制的,你看了后自己改改~!给你个十进制转二八进制的程序你自己改改把,很简单的
#include <iostream>
using namespace std;
int change(int m,int z)
{
int i=0,j;
int a[50],b[50];
while(m!=0)
{
a[i]=m%z;
m=m/z;
i++;
}
int k=i;
int t=i;
for(j=0;j<k;j++)
{
b[--t]=a[j]; //注意自减运算符与自增运算符的不同
}
for(j=0;j<i;j++)
{
cout<<b[j]<<" ";
}
return 0;
}
void main()
{
cout<<"输入整数m和进制数z(2进制或者8进制)"<<endl;
int m,z;
cin>>m>>z;
change(m,z);
}
热心网友
时间:2023-08-03 00:48
#include<stdio.h>
#include<math.h>
main()
{ int a[1000],n,f ,i,j;long y; scanf("%d",&n);
for(i=0;n!=1;i++,n=n/2)
a[i]=n%2;
a[i]=1;
for(y=0,j=0;j<=i;j++)
y=y+a[j]*pow(10,j);
printf("%ld\n",y);
}||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||#include <stdio.h>
int main(void)
{
const int iTimes=sizeof(int) * 8;
int iMask=1;
int x = 12345;
int x2[iTimes];
int i;
for( i=0 ; i<iTimes ; i++ ){
x2[i]=x & iMask;
iMask = iMask << 1;
// printf("%d",iMask);
}
printf("\n(%d)d=",x);
for( i=iTimes -1 ; i >=0 ; i-- ){
printf("%d",x2[i] ? 1 : 0 );
}
return 0;
}
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||