C语言:怎么将十进制数字转换为二进制字符串,谁能帮我写个函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言:怎么将十进制数字转换为二进制字符串,谁能帮我写个函数相关的知识,希望对你有一定的参考价值。
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。 比如:255=(11111111)B 这个不 是一下就会的得勤加练习 就会做到熟能生巧。 望采纳 参考技术A纯手打,支持各种进制
using namespace std;
char *myitoa(int num,char *str,int radix);
int main()
int a;
char *p=new char[100];
while(cin>>a)
cout<<myitoa(a,p,2)<<endl;
return 0;
char *myitoa(int num,char *str,int radix)
//num是输入数字,str是存放对应的字符串,radix是进制
char *temp=new char[10];
int a,i=0,j=0;
if(num<0)
str[i++] = '-';
num *= -1;
while(num>0)
a = num%radix;
if(a > 9)
temp[j++] = a -10 +'A';
else
temp[j++] = a +'0';
num /= radix;
while(j>0)
str[i++] = temp[--j];
str[i] = '\\0';
return str;
本回答被提问者和网友采纳 参考技术B 用itoa()函数就可以啦,
楼上不地道,你敢说你是纯手打的吗?之前就有的复制了一下吧?呵呵 参考技术C int binary(int n, char* pszb)
int a=1, i;
for(i=31; i>=0; i--)
if( n&a)
pszb[i] = '1';
else
pszb[i] = '0';
a<<=1;
return 0;
参考技术D char *s=itoa(); .
c语言输入数字转换成2进制字符串原理
一般在程序里面写成除二取余数的方法来得到。跟二进制的数的取法手工算法一样。任意数除2以后,如果有小数点,就在堆栈中写进一个1,没有小数就写0。然后除完以后,把堆栈的数倒取出来,就成了该数字的二进制。
#include <iostream.h>
void divideData(const float number, int &integer, float &decimal); //分离出整数和小数部分.
void printBinaryForInteger(int &integer); //打印整数部分的二进制形式.
void printBinaryForDecimal(float &decimal); //打印小数部分的二进制形式.
int main()
float number;
int integer;
float decimal;
cout<<"Please input a decimal number for being converted: ";
cin>>number;
cout<<"\nThe binary number converted from your input "<<number<<" is: ";
divideData(number, integer, decimal);
printBinaryForInteger(integer);
if (integer==0) cout<<"0";
cout<<".";
printBinaryForDecimal(decimal);
cout<<endl;
return 1;
void divideData(const float number, int &integer, float &decimal)
integer = (int)number;
decimal = number - (float)integer;
void printBinaryForInteger(int &integer)
int k,a=0;
int b[32];
while (integer!=0)
k=integer%2;
b[a++]=k;
integer=integer/2;
while (a>0)
cout<<b[--a];
void printBinaryForDecimal(float &decimal)
int i=0;
int count=0;
int a[8]=0;
while (count<6) //小数部分取6位(也可用符号常量设置).
decimal*=2;
a[count++]=(int)decimal;
if (decimal>=1.0)
decimal-=1.0;
while (i<6)
cout<<a[i++];
//用于C编译器时略作修改;只考虑了输入数为正数. 参考技术A 一种方法是模拟人计算二进制的方法,另外一种是利用位运算的方法
以上是关于C语言:怎么将十进制数字转换为二进制字符串,谁能帮我写个函数的主要内容,如果未能解决你的问题,请参考以下文章