gpt4 book ai didi

c - 2个二进制数的公共(public)位数

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:08 29 4
gpt4 key购买 nike

我正在编写一个程序来计算给定数字的两个二进制表示之间的共同位数。我写的代码是:

int common_bits(int a, int b) {


static long binaryNo1,binaryNo2,remainder1,remainder2,factor = 1;

if(a!= 0&&b!=0){

remainder1 = a % 2;
binaryNo1 = remainder1 * factor;
remainder2 = b % 2;
binaryNo2 = remainder2 * factor;
factor = factor * 10;
if (binaryNo2==binaryNo1)
{
int count=0;
count++;

}
common_bits(a/2,b/2);
}

return 0;



}

我一直面临这个错误,任何人都可以解释原因并告诉我如何更正它。

这个工作原理的一个例子是:13(二进制为 1101)和 7(二进制为 111)有 2 个共同位

提前致谢。

最佳答案

首先,让我们修复你的程序:你的代码在递归调用后没有返回任何东西,乘以一个不必要的因子,使用因子 10k 而不是 2k ,并使用了不必要的递归。修复相当简单:

remainder1 = a % 2;
remainder2 = b % 2;
int count = 0;
if (remainder1 == remainder2) {
count++;
}
return count + common_bits(a/2, b/2);

关于c - 2个二进制数的公共(public)位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28258882/

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