正在处理要求仅使用按位运算符重写所有基本算术运算(加/减/乘)的作业。 其中一个不完整的方法有如下描述“返回其二进制表示与 i 相同的二进制表示形式相反的整数。” 我已经成功地重写了 add()、subtract() 和 multiply 函数,但需要关于如何处理这个函数的建议。 截至目前,这就是我所拥有的一切......
unsigned int reverse(unsigned int i)
{
{
int reverse;
while (i != 0)
{
reverse = reverse * 10;
reverse = reverse + i%10;
i = i/10;
}
return i;
}
}
最佳答案
如果你想构建一个新的二进制表示,你应该使用二进制操作:
- 使用
<<
乘以 2 - 使用
& 1
确定最低有效位的值 - 使用按位或
|
而不是加法来设置最低有效位 - 使用
>>
除以 2
使用这些更改重写代码后,您将获得预期的结果。
关于c - 需要返回一个整数,其二进制表示形式与 i 的反向表示相同。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999813/