C/C++ 移位运算 使表达式的值与变量的第n位相同
1、问题描述
有两个int型变量a 和 n要求写一个表达式,使该表达式的值和a的第n位相同
2、不全面的实现
在单片机程序中经常见到的实现是
(a & (1 << n)) >> n
但需要注意的是该实现当n是31的时候,若正好是个负数,则符号位为1,右移31位后得出的结果并不是1!
3、正确解法
(a >> n) & 1
该方法在 0 <= n <= 31的情况下都成立。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。