C语言,如何把输入的一个字符串,转换为相应的二进制数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言,如何把输入的一个字符串,转换为相应的二进制数?相关的知识,希望对你有一定的参考价值。

比如我输入10001000,怎么能让系统知道这个是一个二进制?然后对它进行操作呢?

参考技术A #include <stdio.h>
int main()

    char str[100];
    int i,n=0;
    scanf("%s",str);
    for(i=0;str[i]!=\'\\0\';i++)
    
        if(str[i]==\'1\' || str[i]==\'0\')
        
            n<<=1;
            n+=str[i]-\'0\';
        
        else
        
            printf("不是二进制数\\n");
            return 1;
        
    
    printf("%d\\n",n);

追问

谢谢,不过不太明白if里面的语句,麻烦您解释一下好吗

追答#include <stdio.h>
int main()

    char str[100];
    int i,n=0;
    scanf("%s",str);
    for(i=0;str[i]!=\'\\0\';i++)
    
        if(str[i]==\'1\' || str[i]==\'0\')    //判断第i个字符是否是\'1\'或\'0\',如果是执行下面语句
        
            n<<=1;    //把已经得到的n值左移1位,等同于乘以2
            n+=str[i]-\'0\';    //字符\'1\'减去\'0\'就等于1,字符\'0\'减去\'0\'当然是0,所以这句的意思是把第i个字符所对应的数加到n上去
        
        else
        
            printf("不是二进制数\\n");
            return 1;
        
    
    printf("%d\\n",n);

本回答被提问者采纳

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语言,如何把输入的一个字符串,转换为相应的二进制数?的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么把字符串转换为可以用于计算的数字

c语言如何将字符串转为二进制的整型然后保存到整型数组里?

刚学C语言,不太懂。把键盘输入的由数字字符组成的字符串转换为相应的数字。例如把"123"转换为整数123

c语言输入数字转换成2进制字符串原理

C语言 字符串转数字 急急急

C语言如何把一个字符串转换成数字