c - 需要返回一个整数,其二进制表示形式与 i 的反向表示相同。

标签 c

正在处理要求仅使用按位运算符重写所有基本算术运算(加/减/乘)的作业。 其中一个不完整的方法有如下描述“返回其二进制表示与 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/

相关文章:

c - 嵌套宏调用

php - 仅将键插入到 json 中,不插入值

c - C程序设计语言第二版练习1-9

c - C 预处理器命令的正则表达式

c++ - 为什么自建的 g++ 编译器无法编译我的代码

使用 C 等语言进行编程中的字符编码

c - C 中的递归不返回字符串值

c++ - 使用 Autotool 在 Windows 和 Mac 上编译

c - 为什么这段代码在 C 语言中可以工作?

java - 为什么JVM在进入无限递归时不会崩溃?