【问题标题】:converting dec-numbers to binary code with a string使用字符串将 dec 数字转换为二进制代码
【发布时间】:2018-05-14 23:33:24
【问题描述】:

我在做一个程序。您可以输入一个普通数字,程序应先将其转换为二进制代码,然后将其复制为字符串。如果我启动程序并输入一个数字,则没有任何反应。

 #include <stdio.h>
#include <stdlib.h>

int main()
{   int i;
    unsigned short input;
    char output [18] = "";

    printf("enter a positive number\n");

    scanf("%hu", &input);

    for (i= 16; 1; i-- )
       {
          output [i] =  input % 2;

        input = input / 2;

       }

     puts(output);


    return 0;
}

【问题讨论】:

  • 那是因为'1' != 1
  • for (i= 16; 1; i-- ) 将永远循环。
  • 你试过调试这个吗?
  • '1' != 1 你的意思是一个 char != int ?
  • 但它为什么要永远循环呢?

标签: c arrays string binary


【解决方案1】:

output 应该是 NUL 终止的,所以你需要 16 个字节用于 short int 加上 1 个用于空字符

char output [17];

0的ASCII值加到结果中得到01

for(i = 16; i >= 0; i--)
{
    output[i] = '0' + input % 2;
    input = input / 2;
}

最后添加空字符:

output[16] = 0;

您也可以使用移位运算符

unsigned int bitmask = 1 << (15 - i);
output[i] = '0' + ((input & bitmask) ? 1 : 0);

【讨论】:

    猜你喜欢
    • 2016-07-16
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2017-03-23
    • 2014-08-02
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多