gpt4 book ai didi

c - C 中的二进制操作

转载 作者:行者123 更新时间:2023-11-30 17:47:15 25 4
gpt4 key购买 nike

我在编写二进制加、减、乘、除程序时遇到一些问题。我遇到的主要问题是能够限制程序输出 1 和 0(二进制部分),并且它还需要能够操作二进制(如果它是十进制),例如 101.1 或 1.0101。下面是我在研究过程中在网上找到的一个程序,但我还不完全理解它是如何工作的来实现我自己的程序,也不能计算带有小数的二进制。我不想使用数组,因为它限制了最大输出,具体取决于您留出进行这些计算的位。

期待一些潜在的想法。

#include<stdio.h>

int main(){

long int binary1,binary2;
int i=0,remainder = 0,sum[20];

printf("Enter any first binary number: ");
scanf("%ld",&binary1);
printf("Enter any second binary number: ");
scanf("%ld",&binary2);

while(binary1!=0||binary2!=0){
sum[i++] = (binary1 %10 + binary2 %10 + remainder ) % 2;
remainder = (binary1 %10 + binary2 %10 + remainder ) / 2;
binary1 = binary1/10;
binary2 = binary2/10;
}

if(remainder!=0)
sum[i++] = remainder;

--i;
printf("Sum of two binary numbers: ");
while(i>=0)
printf("%d",sum[i--]);

return 0;
}

最佳答案

如果您有定点十进制数,该代码可能会起作用。

我建议将字符串解析为 double 字,然后使用标准算术。要解析数字,请在“.”上拆分字符串。小数点分隔符。您从右到左解析整数部分,将一和零乘以从 0 开始的 2 的增长幂。然后解析另一个字符串(小数部分),乘以从 1 开始的 2 的增长幂的倒数。

例如:110.11001

110 + 11001

反转整数 = 0*2^0 + 1*2^1 + 1*2^2小数 = 1*2^-1 + 1*2^-2 + 0*2^-3 + 0*2^-4 + 1*2^-5

关于c - C 中的二进制操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18983754/

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