
方法如下:
1、十进制整数转二进制数方法:除以2取余数,逆序排列(除二取余法)
具体做法:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
以321为例,步骤如下
321/2=1601
160/2=800
80/2=400
40/2=200
20/2=100
10/2=50
5/2=21
2/2=10
1/2=01
则321(十进制)=101000001(二进制)
2、百度搜索查询:
(1)、打开百度,在百度搜索“321转换成二进制数”;
(2)、得到转换结果。
/
parameter: number 要转换的整数,ret[] 存放的转换后的二进制字节数组,ret_len 字节数组长度
return: 0 失败,1 成功
/
int IntegerToBinary(int number, char ret[], int ret_len)
{
unsigned int index;
int i=0, N=sizeof(int)8; //获取int类型的位数
if (ret_len < N)
{
return 0;
}
index = 1<<(N-1); //将1循环左移N-1次
for (i=0; i<N; ++i)
{
ret[i] = ((number&index)==0)'0':'1'; //将需要求值的整型数与index按位相“与”,从最高位起判断是否为1
index >>= 1; //将index值循环右移
}
return 1;
}
使用:
char c[16] = {0};
IntegerToBinary(53,c,sizeof(c));
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。以0875为例,具体做法是:
一、取整运算
1、用2乘十进制小数,可以得到积:20875=175;
2、将积的整数部分1取出,再用2乘余下的小数部分075,又得到一个积,则2075=15‘
3、再将积的整数部分取出,如此进行,则052=10;此时,积中的小数部分为零,此时0或1为二进制的最后一位,不再往下计算。
二、按序排列
把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。即0875=(0111)B
扩展资料:
运算原理
十进制小数转换为二进制小数,假设一十进制小数B化为了二进制小数0ab的形式,同样按权展开,得:B=a(2^-1)+b(2^-2)
因为小数部分的位权是负次幂,所以我们只能乘2,得2B=a+b(2^-1)因为a变成了整数部分,我们取整数正好是取到了a,剩下的小数部分也如此。
值得一提的是,小数部分的按权展开的数位顺数正好和整数部分相反,所以不必反向取余数了。
参考资料来源:百度百科-十进制转二进制
#include<stdioh>
#define MAX 32
int main(void)
{
int i=0,n,a[MAX];
printf("请输入一个十进制整数:\n");
scanf("%d",&n);
while (n>0) //循环过程的始终,判断n是否能被2除尽
{
a[i] = n%2; //用数组存储每次除以2之后的余数,即断定奇偶性,对应二进制位上数值
i = i+1;
n = n/2;
}
printf("十进制整数转换为二进制数是:\n");
for(; i > 0; i--)
printf("%d",a[i-1]);
printf("\n");
return 0;
}
给你个十进制转二八进制的程序你自己改改把,很简单的
#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);
}
方法:要从右到左用二进制的每个数去乘以2的相应次方,小数点后则是从左往右。
例如:二进制数110101转化成十进制
110101(二进制)=12^0+02^1+12^2+12^3 +02^-1+12^-2=1+0+4+8+0+025=1325(十进制)
所以总结起来通用公式为:
abcdefg(二进制)=d2^0+c2^1+b2^2+a2^3+e2^-1+f2^-2+g2^-3(十进制)
扩展资料
1、十进制整数转换为二进制整数
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
2、十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,此时0或1为二进制的最后一位。或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
参考资料来源:百度百科—十进制转二进制
#include<stdioh>
#define SIZE 20
void main()
{
void zhuanhua(float n,int x);
void xiaoshu(float x);
float n;
int x;
printf("请输入任意的一个十进制数: ");
scanf("%f",&n);
x=(int)n;
if(x!=n)//输入为小数时
{
printf("转换成二进制为: ");
zhuanhua(n,x);//输出整数部分
printf("");
xiaoshu(n-x);//输出小数部分
}
else //输入为整数时
{
printf("转换成二进制为: ");
zhuanhua(n,x);
}
printf("\n");
}
//以下是自定义函数
void zhuanhua(float n,int x)
{
int i=0;
int a[SIZE];
if(n<0){x=-x;printf("-");}//变负数为正数同时加上负号(解决负数情况)
do
{
a[i++]=x%2;//除2取余
x=x/2;//取得本循环的商数作为下一循环被除数
}while(x!=0);
for(i=i-1;i>=0;i--)printf("%d",a[i]);//输出
}
void xiaoshu(float x)
{
int i;
int a[SIZE];
if(x<0)x=-x;
for(i=0;i<=5;i++)
{
a[i]=(int)(x2);//乘2取整
x=x2-a[i];//取得本循环的积的小数部分作为下一循环被除数
}
for(i=5;i>=0;i--)printf("%d",a[i]);//输出
}
1、十进制转二进制,我们采用短除法,比如要将十进制的29转成二进制,用29除以2,商写在下面,余数写在商的右边。
2、继续往下除,同样的商写在下面,余数写在商的右边。
3、当除到商为0的时候,就不用往下除了。
4、这个时候将余数从下到商排列出来,得到的数就是二进制的。
5、二进制转十进制采用权相加法,比如1011010转成十进制,需要说明下,2的几次方哪个次数是怎么确定的,比如从左数的第一位1,在它的前面还有六位,那么它的次数就是为6。
以上就是关于十进制数如何转换为二进制数全部的内容,包括:十进制数如何转换为二进制数、十进制转换成二进制程序、十进制怎样转换成二进制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)