相关疑难解决方法(0)

((a +(b&255))&255)是否与((a + b)&255)相同?

我正在浏览一些C++代码,发现这样的东西:

(a + (b & 255)) & 255
Run Code Online (Sandbox Code Playgroud)

双重和我生气,所以我想到:

(a + b) & 255
Run Code Online (Sandbox Code Playgroud)

(a并且b是32位无符号整数)

我很快写了一个测试脚本(JS)来证实我的理论:

for (var i = 0; i < 100; i++) {
    var a = Math.ceil(Math.random() * 0xFFFF),
        b = Math.ceil(Math.random() * 0xFFFF);

    var expr1 = (a + (b & 255)) & 255,
        expr2 = (a + b) & 255;

    if (expr1 != expr2) {
        console.log("Numbers " + a + " and " + b + " mismatch!");
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然剧本证实了我的假设(两个操作都是平等的),但我仍然不相信它,因为1) …

c++ binary logic

92
推荐指数
6
解决办法
7665
查看次数

标签 统计

binary ×1

c++ ×1

logic ×1