【发布时间】:2015-02-01 11:06:53
【问题描述】:
我正在编写一个程序来计算给定数字的两个二进制表示之间的共同位数。我写的代码是:
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 个共同的位
提前致谢。
【问题讨论】:
-
你只计算两个数字都有
1的地方吗?或者他们都有0?前导零呢? -
另外,关于你的代码的一切都比它需要的复杂。您可以将
remainder1与remainder2进行比较。 -
不,我忽略了前导零,并认为数字零具有 0 的单个位表示。
-
@BenVoigt 是的,你是对的,比较这些就足够了——我认为这不是问题的根源。谢谢我会做出改变