十进制数转16位二进制(C)
decimal number convert to 16bit binary (C)
我想将十进制数转换为 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
数组,其元素可以通过索引 0
到 15
访问。您访问了第 16
个导致未定义的行为。
%s
in printf
需要一个空终止的 char
数组。你没有提供。这又是未定义的行为。
该函数没有 return 任何东西。使 return 类型 void
.
正在对二进制形式进行反打印。确保这是您想要的。您应该反向打印数组。 for
循环完成后,您将打印它。
for(int in = BIT-1; in >= 0; in--){
printf("%c",str[in]);
}
printf("\n");
按照我打印的方式,如果遵循,则不需要空终止符。
我想将十进制数转换为 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
数组,其元素可以通过索引 0
到 15
访问。您访问了第 16
个导致未定义的行为。
%s
in printf
需要一个空终止的 char
数组。你没有提供。这又是未定义的行为。
该函数没有 return 任何东西。使 return 类型 void
.
正在对二进制形式进行反打印。确保这是您想要的。您应该反向打印数组。 for
循环完成后,您将打印它。
for(int in = BIT-1; in >= 0; in--){
printf("%c",str[in]);
}
printf("\n");
按照我打印的方式,如果遵循,则不需要空终止符。