0

我在编写用于加、减、乘和除二进制的程序时遇到了一些问题。我遇到的主要问题是能够限制程序提供 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;
}
4

1 回答 1

0

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

我建议将字符串解析为双精度数,然后使用标准算术。要解析数字,您将字符串拆分为“。” 小数分隔符。您从右到左解析整数部分,将 1 和 0 乘以从 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

于 2013-09-24T14:11:19.560 回答