【发布时间】:2011-07-18 14:14:06
【问题描述】:
标题确实说明了一切:减一和 tilda (ones-complement) 零有什么区别?
在讨论指定设置所有位的位掩码的最佳方法时,出现了这个问题。以下哪个更好?
int func(int value, int mask = -1) {
return (value & mask);
}
或
int func(int value, int mask = ~0) {
return (value & mask);
}
有没有其他用途可以反其道而行之?
更新:在stackoverflow.com/q/809227/34509 上也有关于这个主题的类似讨论,我在之前的研究中错过了这个讨论。感谢 Johannes Schaub 指出这一点。
【问题讨论】:
-
这是从什么时候开始的java?
-
诚然,我在编写示例时正在考虑 C++,但问题最初是在使用 java 时出现的。
-
如果“最好”是指“最易读”,那么它们都很糟糕。 0xFFFFFFFF 有什么问题?
-
0xFFFFFFFF 假设 int 是 32 位宽,但不一定如此。
标签: c++ bitmask ones-complement