gpt4 book ai didi

无法打印二进制计算

转载 作者:行者123 更新时间:2023-11-30 16:12:04 25 4
gpt4 key购买 nike

我有一个框架代码来获取两个数字的输入并将它们加在一起,但是我不知道如何编写将输入转换为二进制数的代码部分

例如,如果我输入 ./calc.c 5+5。数字为 10,二进制为 00001010。但我不知道如何使用代码将十进制转换为二进制。

有什么帮助吗?

谢谢。

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

int main(int argc, char ** argv){

int dec1 = atoi(argv[1]);
char op = argv[2][0];
int dec2 = atoi(argv[3]);
int i;


printf("Called with dec1: %d op: %c dec2: %d\n", dec1, op, dec2);


if(dec1 & 1){

printf("bit is 1\n");
}
int sum = dec1 + dec2;

if (op == '+'){

for (i=0; i < 4; i++){

printf("%d\n", i);
}
}
printf("\n");
return 0;
}

最佳答案

一种解决方案是使用位掩码检查每个单独位的值。请注意,在大多数系统上,整数通常为 4 个字节,但为了示例起见,我们只考虑最右边的 8 位。另外,我假设 sum 已经正确计算,因为您的问题是关于以二进制打印整数而不是解析方程或算术。

让我们创建一个相当于10000000(等于128)的位掩码,然后旋转它。然后我们可以使用按位 AND 检查 sum 来查看是否设置了每个位。

int bitmask = 128;
for (int i = 0; i < 8; i++ ) {
if (sum & bitmask)
printf("1");
else
printf("0");
bitmask = bitmask >> 1;
}

printf("\n");

此解决方案从左到右检查 sum 中的每一位,看看它是否已设置。如果是,则打印 1,否则打印 0。这是以二进制打印整数的一种方法。

关于无法打印二进制计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58436340/

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