java - 为什么这两个代码片段没有给出相同的输出?
问题描述
我正在尝试反转数字的位。C++ 代码工作正常,但 java 输出错误
C++:
class Solution {
public:uint32_t reverseBits(uint32_t n) {
uint32_t ans=0,k=32;
while(k--)ans=ans*2+n%2,n/=2;
return ans;
}
};
爪哇:
public int reverseBits(int n) {
int out=0;
int k=32;
while(k--!=0){
out=out*2+n%2;
n/=2;
}
return out;
}
输入 11111111111111111111111111111101
输出 1073741824 (01000000000000000000000000000000)
预计 3221225471 (10111111111111111111111111111111)
解决方案
与 C++ 相反,Java 没有无符号整数。所以,我认为你可以传递long
给你的函数,并且只遍历前 32 位。我认为,我应该修改的只是原型有参数是long
.
我希望这有帮助。
推荐阅读
- flutter - 如何:为整个应用程序设置键盘/文本输入类型 (Flutter)
- flask - 如果子对象的属性=True,则将所有其他对象更新为属性=False
- amazon-dynamodb - 使用 java 使用触发器从 dynamodb 将索引流式传输到弹性搜索
- postgresql - 查找在我的电脑上运行的 libpq.dll 版本,用于针对 Postgres 数据库进行编译
- mule-studio - 在汇总值的同时合并两个 JSON 文件
- python - 从 python 获取值并将其添加到 ListView
- vue.js - 使用 raw-loader 从每个文件夹内的文件中获取数据
- c# - 将低延迟视频从 Raspberry Pi 流式传输到 UWP-APP 的最佳方式
- python - python请求下载通过页面上的下载按钮
- r - 无法在 R 下读取 .data 文件?