除二取余法 需要注意的是,除二取余的方法,对于余数的选取是从后往前取的,所以在代码中,也要解决这个问题才行。
思路分析
模仿不停地除2的过程,每次除2之后用 % 取余数i;用 / 作为下一次除2的被除数temp;j初始化为1,每次除了2之后,j = j10。最终输出的结果result在每次除2的迭代中,result = ij + result;这个从后往前取余数的方法就是不断地result = ij + result这样,不需要使用数组等方式逆序取了。
同时,也要考虑到十进制的负数如何转化,这里就是while(temp)来解决的。在while语句中,括号内的值只要不是0就为真,这样就包含了负数的问题。
*代码
int decToBin(int dec)
{
int result = 0, temp = dec, j = 1;
while(temp)
{
result = result + j * (temp % 2);
temp = temp / 2;
j = j * 10;
}
return result;
}
将十进制到二进制转换算法
步骤1:将数字对2取模%``2
,并将余数存储在数组中
步骤2:通过/
(除法运算符)将数字除以2
,
步骤3:重复步骤1和2,直到数字大于零
下面来看看看将十进制转换为二进制的C++示例。
非商业转载请保留原文链接:https://www.yiibai.com/cplusplus/cpp-program-to-convert-decimal-to-binary.html
#include <iostream>
using namespace std;
int main()
{
int a[10], n, i;
cout<<"Enter the number to convert: ";
cin>>n;
for(i=0; n>0; i++)
{
a[i]=n%2;
n= n/2;
}
cout<<"Binary of the given number= ";
for(i=i-1 ;i>=0 ;i--)
{
cout<<a[i];
}
return 0;
}