发布网友 发布时间:2022-04-21 03:34
共5个回答
热心网友 时间:2022-06-17 18:41
C++代码写法实现如下:
1、首先定义两个整型变量,保存计算出的每位二进制数和二进制位数的统计。
2、定义一个实型变量,保存计算的十进制小数。
3、输入一个十进制小数,保存在变量d中。
4、do-while循环中,将十进制小数乘以2。
5、取十进制数的整数部分,保存在变量b中。
6、输出该位的二进制数,同时将十进制数的整数部分减掉。
7、统计二进制的位数,当它的位数达到10位后,停止计算。
8、do-while循环语句的判断条件是,十进制数是否为0。
9、测试c++程序,输入任意一个十进制小数,看是否会输出对应的二进制。
热心网友 时间:2022-06-17 18:41
十进制转换为二进制的c++代码的代码如下:
#include<iostream>
using namespace std;
void main()
{
int n,i,j=0;
int a[1000];
cin>>n;
i=n;
while(i)
{
a[j]=i%2;
i/=2;
j++;
}
for(i=j-1;i>=0;i--)
cout<<a[i];
cout<<endl;
}
扩展资料:
十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以
得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,
如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作
为低位有效位。
参考资料:百度百科-十进制
热心网友 时间:2022-06-17 18:42
代码设计如下:
int decToBin(int dec){
int result = 0,temp = dec,j = 1;
while(temp){
result = result + j*(temp%2);
temp = temp/2;
k = k*10;
}
return result;
十进制转二进制使用方法
除二取余法,十进制转k进制的方法常用的就是除k取余的方法,这里针对这个方法,给出了C++的代码。需要注意的是,除二取余的方法,对于余数的选取是从后往前取的,所以在代码中,也要解决这个问题才行。
思路分析
模仿不停地除2的过程,每次除2之后用 % 取余数i;用 / 作为下一次除2的被除数temp;j初始化为1,每次除了2之后,j = j*10。
最终输出的结果result在每次除2的迭代中,result = i*j + result;这个从后往前取余数的方法就是不断地result = i*j + result这样,不需要使用数组等方式逆序取了。
同时,也要考虑到十进制的负数如何转化,这里就是while(temp)来解决的。在while语句中,括号内的值只要不是0就为真,这样就包含了负数的问题。
四、总结
这个方法,可以推广到十进制转k进制,需要更改的地方就是 %k 和 /k 就可以。
扩展资料:
n进制转为十进制的代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define LENGTH 100
int main(void)
{
long t1;
int i,n,t,t3;
char a[LENGTH];
printf ("请输入数字:\n");
gets(a); //输入n进制数存放到数字a中
strupr(a); //将a中的小写字母转为大写字母
t3=strlen (a); //求出数组a的长度
t1=0;
printf ("请输入进制数(2 or 8 or 16):\n");
scanf ("%d",&n); //输入的是几进制数
for (i=0;i<t3;i++)
{
if (a[i]-'0'>=n&&a[i]<'A'||a[i]-'A'+10>=n) //判断输入数与进制数是否相符合
{
printf ("输入错误.\n");
exit (0); //退出程序
}
if (a[i]>='0'&&a[i]<='9') //判断是否为数字
{
t=a[i]-'0';
}
else if (n>=11&&(a[i]>='A'&&a[i]<='A'+n-10)) //判断是否为字母
t=a[i]-'A'+10; //求出字母所代表的十进制数
t1=t1*n+t; //求出最终转换成的十进制数
}
printf ("十进制数是:%ld\n",t1); //打印结果
system ("pause");
return 0;
}
参考资料:百度百科-十进制转二进制
热心网友 时间:2022-06-17 18:42
举例说明:
1、方法一
int decToBin(int dec){
int result = 0,temp = dec,j = 1;
while(temp){
result = result + j*(temp%2);
temp = temp/2;
k = k*10;
}
return result;
}
2、方法二
#include<stdio.h>
#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;
}
扩展资料
十进制和二进制间的转化:
1、二进制数的运算公式:0+0=0 0*0=0 0+1=1 0*1=0 1+0=1 1*0=0 1+1=10 1*1=1
2、十进制转换二进制:讲十进制整数换成二进制整数时,只要将它一次一次发被2除,得到的余数从最后一个余数读起。
3、二进制数转换成十进制数:讲一个二进制数的整数换成十进制数,只要将按权展开。
例如:11011=1**24(2的4次方)+1*23(2的3次方)+0*00(2的2次方)+1*21(2的一次方)+1*20(2的0次方)=27
热心网友 时间:2022-06-17 18:43
#include <iostream>//将十进制转为二进制,并输出其中1的个数。
using namespace std;
int main()
{
int t,n,a[100];
int i,k,j;
cin>>t;
while(t--)//控制多组输入
{
i=j=0;
cin>>n;
while(n!=0)//该循环将十进制转为二进制并存入数组a
{
a[i++]=n%2;
n/=2;
}
for(k=i-1;k>=0;k--)//倒序输出二进制
{
if(k==i-1)cout<<a[k];
else cout<<" "<<a[k];
if(a[k]==1)j++;
}
cout<<endl;
cout<<j<<endl;//输出1的个数
}
return 0;
}
扩展资料
void ten_to_two( int n )
{ int i , j ; int a[1000] ; memset( a , 0 , sizeof(a) ); // 一定要记得每次运算前将a数组清零
i = n ;
j = 1 ; while(i){
a[j] = i & 1 ; //取最后一位
i >>= 1 ; //除以2
++ j ;
} for( i = 7 ; i >= 0 ; -- i ) // 将结果呈八位数输出 倒序!
//(如果想输出本来位数的话就把 7 改成 j - 1 就ok啦)
cout << a[i] ; cout << endl ;
}
参考资料:百度百科 进制转换