C++代码写法实现如下:
1、首先定义两个整型变量,保存计算出的每位二进制数和二进制位数的统计。
2、定义一个实型变量,保存计算的十进制小数。
3、输入一个十进制小数,保存在变量d中。
4、do-while循环中,将十进制小数乘以2。
5、取十进制数的整数部分,保存在变量b中。
6、输出该位的二进制数,同时将十进制数的整数部分减掉。
7、统计二进制的位数,当它的位数达到10位后,停止计算。
8、do-while循环语句的判断条件是,十进制数是否为0。
9、测试c++程序,输入任意一个十进制小数,看是否会输出对应的二进制。
十进制转换为二进制的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乘余下的小数部分,又得到一个积,再将积的整数部分取出,
如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作
为低位有效位。
参考资料:百度百科-十进制
本回答被网友采纳#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 ;
}
参考资料:百度百科 进制转换
代码设计如下:
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;
}
参考资料:百度百科-十进制转二进制
本回答被网友采纳举例说明:
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
本回答被网友采纳用C++输入一个十进制数,将其转换为二进制数输出。
十进制数转换为二进制数的代码为:include 〈iostream〉include 〈bitset〉int main(){ int num;cout<<bitset<sizeof(num)*8>(num)<<endl;return 0;} 扩展资源:代码中所使用的库函数-bitset:C++语言的一个类库,用来方便地管理一系列的bit位而不用程序员自己来写代码。bitset除了可以访问指定下标...
十进制转换为二进制的c++代码
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;...
十进制转换为二进制的c++代码
C++代码写法实现如下:1、首先定义两个整型变量,保存计算出的每位二进制数和二进制位数的统计。2、定义一个实型变量,保存计算的十进制小数。3、输入一个十进制小数,保存在变量d中。4、do-while循环中,将十进制小数乘以2。5、取十进制数的整数部分,保存在变量b中。6、输出该位的二进制数,同时...
用C语言如何将十进制转换为二进制
system("cls"); \/*清屏*\/ 3、输入十进制数:printf("请输入一个十进制数(0~32767):\\n");scanf("%d", &n); \/*输入n的值*\/ 4、计算二进制数:for (m = 0; m < 15; m++) \/*for循环从0到14,最高为符号位,本题始终为0*\/ { i = n % 2; \/*取2的余数*\/ ...
c++中10进制怎么转换为2进制?
cout<<"请输入十进制数:"; cin>>x; int a[1000]={0}; if(x==0) { cout<<"转换的二进制数为:0"; } while(x>0) { yushu=x%2; x=x\/2; a[i++]=yushu;} cout<<"转换的二进制数为:"; for(y=i-1;y>=0;y--) { cout<<a[y]; } cout<<endl;} 本回答被提问者和网友采纳 12...
C语言中怎样调用函数将十进制转换成二进制?
1、打开visualC++6.0-文件-新建-文件-C++SourceFile。2、输入预处理命令和主函数:include<stdio.h> \/*输入输出头文件*\/ voidmain()\/*空类型:主函数*\/ 3、定义变量和数组的数据类型并输入一个十进制:intb[16],x,k,r,i;\/*定义变量和数组的数据类型为整型*\/ printf("输入一个十进制:"...
C++十进制换成二进制
void main(){ int a,e,b,s[32],i,j;while(scanf("%d",&e)==1){ printf("%11d-->",e);if(e==0){ puts("0");} a=e;if(a<0){ b=-1;printf("-");a=0-a;} i=0;while(a){ s[i]=a%2;a=a\/2;i++;} for(j=i-1;j>=0;j--){ printf("%d",s[j]);}...
用C++把十进制转换成二、八、十六进制的程序代码~~
cout<<"请输入十进制整数以及要转化成的进制数,以空格分开:\\n";cin>>n>>x;switch (x){ case 8:cout<<"八进制:"<<oct<<n<<endl;break;case 16:cout<<"十六进制:"<<hex<<n<<endl;break;case 2:cout<<"二进制:";erjinzhi(n);break;default:cout<<"输入有误!"<<endl;break;...
C++用栈编写十进制转化为二进制
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。include <iostream...
c++中10进制怎么转换为2进制?
yushu;static int i=0;int x;cout<<"请输入十进制数:";cin>>x;int a[1000]={0};if(x==0){ cout<<"转换的二进制数为:0";} while(x>0){ yushu=x%2;x=x\/2;a[i++]=yushu;} cout<<"转换的二进制数为:";for(y=i-1;y>=0;y--){ cout<<a[y];} cout<<endl;} ...