用C++输入一个十进制数,将其转换为二进制数输出。
十进制数转换为二进制数的代码为:
#include 〈iostream〉
#include 〈bitset〉
int main(){
int num;
cout<<bitset<sizeof(num)*8>(num)<<endl;
return 0;
}
扩展资源:
代码中所使用的库函数-bitset:
C++语言的一个类库,用来方便地管理一系列的bit位而不用程序员自己来写代码。
bitset除了可以访问指定下标的bit位以外,还可以把它们作为一个整数来进行某些统计。
可以如下声明一个该类型变量:
bitset<N>varm (M)
其中varm为变量名。
N表示该类型在内存中占的位数,是二进制。
M表示变量varm的初始值。
参考资源:bitset-百度百科
#include <stdio.h>
void main()
{
//进制转换函数的声明
int transfer(int x);
int x;
printf("请输入一个十进制数:");
scanf("%d",&x);
printf("转换成二进制数是:%d\n",transfer(x));
}
int transfer(int x)
{
int p=1,y=0,yushu;
while(1)
{
yushu=x%2;
x/=2;
y+=yushu*p;
p*=10;
if(x<2)
{
y+=x*p;
break;
}
}
return y;
}
扩展资料:
反之,二进制转化为十进制
#include <iostream>
using namespace std;
#include <bitset>
int main()
{
bitset<16> bint; // 16 bit 二进制数据,还有 bitset<32>
cin >> bint;
cout << bint.to_ulong() << endl;
return 0;
}
一、问题描述
十进制数是指各位数字全部由小于10的数字(0..9)组成的数值,如123、45678等。二进制数是指各位数字全部由小于2的数字(0..1)组成的数值,如10、1011等。将十进制数转换为二进制数是将全部由小于10的数字组成的数值转换为全部由小于2的数字组成的数值,如十进制数100转换为二进制数为1100100。
二、算法思想
将十进制数转换为二进制数的算法是采用辗转取余法,即将待转换数不断除2取余,记录余数,用新的商继续除2取余,直到该数为零。由于余数小于2,故所有余数组成的数值全部由0、1组成。再对这些余数进行逆置即可。
//辗转取余
while(num > 0)
{
arr[n++] = num % 2 + '0';
num /= 2;
}
//逆置余数列表
for(i=0; i<n/2; i++)
{
temp = arr[i];
arr[i] = arr[n-1-i];
arr[n-1-i] = temp;
}
三、参考程序
#include <iostream>
#include <malloc.h>
#define MAX 33
using namespace std;
/* 十进制数转换为二进制数(字符串表示) */
char *decToBin(long num);
int main()
{
long dec = 123456789;
cout<<"10进制数:\t"<<dec<<endl;
cout<<"2进制数:\t"<<decToBin(dec)<<endl;
return 0;
}
/* 十进制数转换为二进制数(字符串表示) */
char *decToBin(long num)
{
char *arr;
char temp;
int i, n;
arr = (char *)malloc(sizeof(char) * MAX);
n = 0;
while(num > 0)
{
arr[n++] = num % 2 + '0';
num /= 2;
}
for(i=0; i<n/2; i++)
{
temp = arr[i];
arr[i] = arr[n-1-i];
arr[n-1-i] = temp;
}
arr[n] = '\0';
return arr;
}
四、运行测试:
10进制数: 123456789
2进制数: 111010110111100110100010101
2013-07-27
//十进制数转换成二进制数字
void fun_1(int n)
{
if(n<2)
cout<<n;
if(n>=2)
{
fun_1(n/2);
cout<<n%2;
}
}
//十进制数字转换成八进制数字
void fun_2(int n)
{
if(n<8)
cout<<n;
if(n>=8)
{
fun_2(n/8);
cout<<n%8;
}
}
//十进制数转换成十六进制数字
void fun_3(int n)
{
switch(n)
{
case 10: cout<<"A"; break;
case 11: cout<<"B"; break;
case 12: cout<<"C"; break;
case 13: cout<<"D"; break;
case 14: cout<<"E"; break;
case 15: cout<<"F"; break;
default: cout<<n;
}
}
void fun_4(int n)
{
if(n<16)
fun_3(n);
if(n>=16)
{
fun_4(n/16);
fun_3(n%16);
}
}
//主函数
void main()
{
int n;
cout<<"请输入n的值: "<<endl;
cin>>n;
cout<<"十进制数字转换成二进制,八进制,十六进制数字结果如下:"<<endl;
fun_1(n);
cout<<endl; //输出结果换行
fun_2(n);
cout<<endl;
fun_4(n);
cout<<endl;
} 吧没有用的删除即可,其他的只是扩展.....
推荐于2017-05-21
using namespace std;
void decToBin(long x, char *a)
{
ltoa(x, a, 2);
}
void hexToDec(char *a, long &x)
{
x = strtol(a, (char**)NULL, 16);
}
int main()
{
long x;
char temp[255];
cout << "输入一个十进制数: ";
cin >> x;
decToBin(x, temp);
cout << "转换成二进制为: " << temp << endl; cout << "输入一个十六进制数: ";
cin >> temp;
hexToDec(temp, x);
cout << "转换为十进制为: " << x << endl;
return 0;
}