Cra*_*der 3 c bitwise-operators
你能解释下面的程序吗?
int main()
{
int max = ~0;
printf("%d\n",max);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
AFAIK~将翻转位.在这种情况下,即〜0将所有位设置为1.因此,最大变量应包含MAX值,但我得到o/p为-1.那么这里的任何人都可以告诉我为什么我的o/p为-1.
为什么你期望获得"最大值"?在2的补码有符号表示中,全1位模式代表-1.这就是它的方式.
二进制补码有符号表示中的最大值由01111...1位模式表示(即第一位是0).你得到的是1111...1,因为第一位 - 符号位 - 显然是负面的1.
如果您想要一个补码零产生"最大值"的示例,请使用无符号表示
int main() {
unsigned max = ~0u;
printf("%u\n", max);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2920 次 |
| 最近记录: |