gpt4 book ai didi

c - 十进制数转换为 16 位二进制 (C)

转载 作者:行者123 更新时间:2023-11-30 14:51:31 25 4
gpt4 key购买 nike

我想将十进制数转换为 16 位二进制数。
我的代码根本不起作用,但我确信我执行了正确的步骤。
希望得到一些帮助。

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

const int BIT = 16;

char binaer(int i) {
char str[BIT];
int j = 0;
if(0 <= i && i <= 65535) {
for(int j = 0; j < BIT + 1; j++) {
if (i % 2 == 0) {
str[j] = '0';
} else {
str[j] = '1';
}
i = i / 2;
}
}
for(int x = BIT - 1; x >= 0; x--){
printf("%c", str[x]);
}
}

int main() {

int value;
scanf("%d", &value);
binaer(value);


return 0;
}
<小时/>
Input: 16
Output: 00001000000000000

最佳答案

首先,main()中的循环是没有意义的。调用该函数一次就完成了。

str 是一个 16 元素 char 数组,其元素可以通过索引 015 访问。您访问了第 16 个,导致了未定义的行为。

printf 中的

%s 需要一个以 null 结尾的 char 数组。你没有提供。这又是未定义的行为。

该函数不返回任何内容。将返回类型设为 void

正在反向打印二进制形式。确保这是您想要的。您应该反向打印数组。 for 循环完成后,您将打印它。

for(int in = BIT-1; in >= 0; in--){
printf("%c",str[in]);
}
printf("\n");

按照我打印的方式,如果遵循的话,就不需要空终止符了。

关于c - 十进制数转换为 16 位二进制 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48242459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com