☆ C/C++ 十进制转二进制

* 因为没有实质运用C++的OOP面向对象编程的思想,虽使用的部分C++语法,但程序本质还是C语言:

在C中我们可以很简单的实现十进制到十六进制与八进制之间的转换(%x/%X、%o),

但是却没有直接的方法直接将十进制转换为二进制,这就需要我们自己编写相应的功能函数去实现转化;

本篇文章将介绍两种转化方法:

1> 短除法(正存逆读)

2> 转换为八进制,然后使用二进制数据对点替换八进制数据

****************************************************************************************************************************************

 

★首先给出源代码: 

# include <iostream>
# include <windows.h>
using namespace std;

void Binary_1(int number)
{
	int i=0,a[32]; 
	while(number>0)
	{
		a[i] = number % 2;
		i++;
		number = number / 2;
	}
	cout<< "转换为二进制:"; 
	for(i--;i>=0;i--)
	{
		cout << a[i];
	}
} 

void Binary_2(int number)
{
	string octonary[8] = {"000","001","010","011","100","101","110","111"};
	char a[22];    //存储八进制数据
	string bin;
	sprintf(a,"%o",number);
	for(int i = 0;a[i];i++) 
	{
		bin+=octonary[a[i]-'0'];
	}
	cout<< "转换为二进制:"; 
	cout << bin;
}

int main()
{
	int n;
	system("title 十进制转二进制"); 
	cout << "输入十进制数 : " ;
	cin >> n;
	Binary_1(n);
	cout << endl;
	Binary_2(n);
	return 0;
}

程序分析:

*octonary 八进制的、八进制

*binary 二进制的、二进制

 • sprintf()的使用:

 • sprintf(*buffer , 格式 , 值)       //把格式化的数据写入某个字符串缓冲区, 如果字符缓冲区过大则返回值+1 (确定长度不可靠)

 • snprintf(*buffer , 需要读取的字符个数 , 格式 , 值)       //指定需要读取的字符个数

Binary_1 : 以整型数组存储每一个0/1数据

Binary_2 : 以字符串的形式存储

 

 

 

 

 

****************************************************************************************************************************************

 

             最快的脚步不是跨越,而是继续,最慢的步伐不是小步,而是徘徊。
 

****************************************************************************************************************************************

    原文作者:进制转换
    原文地址: https://blog.csdn.net/qq_42292831/article/details/83795156
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞