除二取余法 需要注意的是,除二取余的方法,对于余数的选取是从后往前取的,所以在代码中,也要解决这个问题才行。
思路分析
模仿不停地除2的过程,每次除2之后用 % 取余数i;用 / 作为下一次除2的被除数temp;j初始化为1,每次除了2之后,j = j10。最终输出的结果result在每次除2的迭代中,result = ij + result;这个从后往前取余数的方法就是不断地result = ij + result这样,不需要使用数组等方式逆序取了。
同时,也要考虑到十进制的负数如何转化,这里就是while(temp)来解决的。在while语句中,括号内的值只要不是0就为真,这样就包含了负数的问题。
*代码

  1. int decToBin(int dec)
  2. {
  3. int result = 0, temp = dec, j = 1;
  4. while(temp)
  5. {
  6. result = result + j * (temp % 2);
  7. temp = temp / 2;
  8. j = j * 10;
  9. }
  10. return result;
  11. }

将十进制到二进制转换算法

步骤1:将数字对2取模%``2,并将余数存储在数组中
步骤2:通过/(除法运算符)将数字除以2
步骤3:重复步骤1和2,直到数字大于零
下面来看看看将十进制转换为二进制的C++示例。
非商业转载请保留原文链接:https://www.yiibai.com/cplusplus/cpp-program-to-convert-decimal-to-binary.html

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int a[10], n, i;
  6. cout<<"Enter the number to convert: ";
  7. cin>>n;
  8. for(i=0; n>0; i++)
  9. {
  10. a[i]=n%2;
  11. n= n/2;
  12. }
  13. cout<<"Binary of the given number= ";
  14. for(i=i-1 ;i>=0 ;i--)
  15. {
  16. cout<<a[i];
  17. }
  18. return 0;
  19. }