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

        用一个算法实现十进制数向二进制数转换,我们考虑得到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;
}

 

  • 44
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
要将C语言的十进制数转换为二进制数,可以使用以下步骤: 1. 首先,声明一个整型数组来存储每次对2取余的结果。在这个例子,数组名为a,长度为16。 2. 接下来,使用一个for循环来进行转换。循环变量j的初始值为0,终止条件为j小于15。每次循环,执行以下操作: a. 使用变量i来存储给定的十进制数n对2取余的结果。即i = n % 2。 b. 使用变量b来存储n除以2的商。即b = n / 2。 c. 更新n的值为b。即n = b。 d. 将取余结果i存入数组a。即a[j] = i。 e. 将循环变量j的值加1。即j++。 3. 接下来,使用另一个for循环来反向输出数组a的取余结果。循环变量j的初始值为15,终止条件为j大于等于0。每次循环,执行以下操作: a. 输出数组a的元素a[j]。 b. 如果j对4取模的结果等于0,则输出一个空格。 4. 最后,结束程序的执行。 下面是一个示例代码,可以实现将十进制数转换为二进制数的功能: #include <iostream> using namespace std; int main() { int i, n; int a[16] = {0}; cout << "请输入一个整数(0-32767): "; cin >> n; for (int j = 0; j < 15; j++) { int b; i = n % 2; b = n / 2; n = b; a[j] = i; } for (int j = 15; j >= 0; j--) { cout << a[j]; if (j % 4 == 0) cout << " "; } return 0; } 在这个例子,我们首先声明了一个整型数组a来存储每次对2取余的结果。然后,使用两个for循环分别进行转换和输出。第一个for循环用于将给定的十进制数转换为二进制数并存入数组a,第二个for循环用于反向输出数组a的取余结果。在输出,每输出4个元素就加一个空格,以增加可读性。 请注意,此示例代码的数组长度为16,可以处理最大为32767的十进制数。如果需要处理更大的整数,请相应地增加数组的长度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值