C++/C语言中十进制转二进制的常见方法

2023-09-12 08:34:11

        用一个算法实现十进制数向二进制数转换,我们考虑得到7的二进制表示,奇数的二进制形式最后一位肯定是1,而偶数的二进制最后一位肯定是0。可以通过7%2来计算二进制最后一位数是0或者1。即对于十进制整数n而言,二进制表示的最后一位肯定可以用n%2计算出来。而为了得到二进制倒数第二位上的数字,则需要把十进制数除以2,这种对于十进制数的计算相当于把该数值的二进制位向左移了一位(可以类比计算一个十进制数的十位上数字,只需要把该数值除以十,此时得到的结果数值的个位即原数值的十位数值)。如果此时得到的结果是奇数,则说明二进制数倒数第二位对应1,否则为0。此时需要考虑,何时结束运算,只要被2除的结果等于或者大于2,那就还需要一位二进制位进行表示。因此,只有被2除的结果小于2时,才停止计算。所以,可以考虑循环和递归的方法实现该算法。

C语言实现方法一:

#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;
}

C语言实现方法二:

#include <stdio.h>
#define MAX 32
int main(void)
{
     int a,r,i=0,j=1,count[MAX];     //输入的是a
     printf("请输入一个十进制整数:\n");
     scanf("%d",&a);
     do{               //循环,直到a等于0跳出 
         r = a%2;       //求每一次的余数,即二进制位上的数值 
         a = a/2;
         i++;
        count[i] = r;
     }
     while(a != 0);      //每次除以2之后,二进制位左移一位,判断是否结束循环
     printf("十进制整数转换为二进制数是:\n");
     for(j = i; j > 0; j--)      //倒序输出二进制位上数值 
        printf("%d",count[j]);
     printf("\n");
     return 0;
}

C语言实现方法三:

#include<stdio.h>  
void binary_cal(int n){  
     int r;  
     r = n % 2;  
     if(n >= 2)  
           binary_cal(n/2);   //使用递归函数实现,占用较多内存,执行速度较慢
     printf("%d",r);  
}  
int main(void){  
      int num;  
      printf("请输入一个十进制整数:\n");  
      while(scanf("%d",&num) == 1){  
           printf("十进制整数转换为二进制数是:\n");  
           binary_cal(num);  
           putchar('\n');  
      }  
      return 0;   
}

C++实现代码:

#include"stdafx.h"
#include <iostream>
#define MAX 32
using namespace std;
int main(){
	cout << "请输入一个整型十进制数:" << endl;
	int num,i= 0;
	cin >> num;
        cout << "十进制整数转换为二进制数是:" <<endl;
	int bin[MAX],length = 0;
	do
	{
		bin[i] = num % 2;
		num = num / 2;
		i++;
		length++;
	} while (num != 1);
	bin[length] = num;
	length++;
	for (i = length - 1; i >= 0; i--)
		cout << bin[i];
	cout << endl;
	return 0;
}
  • 作者:EMUhelmsman
  • 原文链接:https://blog.csdn.net/qq_34041083/article/details/79967385
    更新时间:2023-09-12 08:34:11