十进制数如何转换为二进制数

十进制数如何转换为二进制数,第1张

方法如下:

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。

以上就是关于十进制数如何转换为二进制数全部的内容,包括:十进制数如何转换为二进制数、十进制转换成二进制程序、十进制怎样转换成二进制等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zz/9480444.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存