首页 > 代码库 > C/C++ 移位运算 使表达式的值与变量的第n位相同
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的情况下都成立。
C/C++ 移位运算 使表达式的值与变量的第n位相同
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。