簡體   English   中英

C十進制到二進制轉換器(16位)

[英]C decimal to binary converter (16 bits)

我正在嘗試將十進制數轉換為二進制(最大16位)。 我的功能可以完美地使用最多8位,但是當我想打印最多16位的數字時,它將停止打印字符。 我使用“ int”作為我的8位數據類型,但是由於我想存儲16位,因此我在每個變量中使用無符號long int。

這是代碼:

/* Program to convert decimal to binary (16 bits) */

#include <stdio.h>
#include <string.h>

char *byte_to_binary_str(long unsigned int byte);

int main()
{

 printf("%s",byte_to_binary_str(32768));  //1000000 0000000
    return 0;
}

char *byte_to_binary_str(long unsigned int byte)
{
    static char bit_string[17];
    bit_string[0] = '\0';

    long unsigned int mask;
    for (mask = 2^15; mask > 0; mask >>= 1) {
        /* Check if the mask bit is set */
        strcat(bit_string, byte & mask ? "1" : "0");
    }

    return bit_string;
}

我的輸出給我:

0000
Process returned 0 (0x0)   execution time : 0.063 s
Press any key to continue.

有人知道為什么會這樣嗎? 提前致謝。

mask = 2^15;

不會將mask的值設置為您期望的2^15即2不加到15的冪。它是215按位XOR。

您需要的二進制文件是1000 0000 0000 0000 該數字將為十六進制的0x8000 因此,使用:

mask = 0x8000;

您還可以在算法中使用有意義的內容。

mask = 1u << 15;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM