关于C中的位掩码为什么(〜(〜0 << N))优于((1 << N)-1)?

关于C中的位掩码为什么(〜(〜0 << N))优于((1 << N)-1)?,第1张

概述我知道〜0将评估最大字大小的位1(并且因此关心可移植性),但是我仍然不知道为什么((1 看看这些行: 1. printf("%X", ~(~0 << 31) );2. printf("%X", (1 << 31) - 1 ); 第1行编译并按预期行事. 第2行给出表达式中的警告整数溢出. 这是因为1< 31被默认处理为有符号的int,因此1< 31 = -2147483648,它是最小可能的整数 我知道〜0将评估最大字大小的位1(并且因此关心可移植性),但是我仍然不知道为什么((1 看看这些行:
1. printf("%X",~(~0 << 31) );2. printf("%X",(1 << 31) - 1 );

第1行编译并按预期行事.

第2行给出表达式中的警告整数溢出.

这是因为1< 31被默认处理为有符号的int,因此1< 31 = -2147483648,它是最小可能的整数. 结果,休息1导致溢出.

相关文章

java - 为什么if(n&-n)== n那么n是2的幂? @L_502_1@ 渐近复杂度 - 如果f(n)= O(g(n)),则不应该f(n)* log2(f(n)^ c)= O(g(n)* log2(g(n) ))取决于C的值? 什么是位掩码和掩码? = 0}不正常">计算机科学 - 为什么是{a ^ nb ^ n | n> = 0}不正常 java - 为什么n n有效,而n n不是? 算法 - 大哦:O(n)O(n)... O(n)如何等于O(n ^ 2)? ruby - 为什么array.slice对于(length,n)的行为不同 点击查看更多相关文章

转载注明原文:关于C中的位掩码为什么(〜(〜0 << N))优于((1 << N)-1)? - 代码日志

解决方法 看看这些行:
1. printf("%X",(1 << 31) - 1 );

第1行编译并按预期行事.

第2行给出表达式中的警告整数溢出.

这是因为1< 31被默认处理为有符号的int,休息1导致溢出.

总结

以上是内存溢出为你收集整理的关于C中的位掩码为什么(〜(〜0 << N))优于((1 << N)-1)?全部内容,希望文章能够帮你解决关于C中的位掩码为什么(〜(〜0 << N))优于((1 << N)-1)?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1233821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存