位运算!菜鸟求教!

weidu23 2013-04-09 09:30:36
假设只有一个4位2进制控制4个LED灯,
我只传一个参数sig给open(receive_sig),那么怎么写才能开启灯啊?
比如原本是0101(代表“四开、三关、二开、一关”),我传入sig = 3给open(sig),怎么变成0001啊?

希望:位运算,最好是通用算法。

菜鸟求教。

自己想了很久没思路!!!
...全文
119 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
褚六 2013-04-10
  • 打赏
  • 举报
回复
3楼正解 想把哪位数置为0 就与一个只有当前位为0其余位全为1的数按位与
weidu23 2013-04-10
  • 打赏
  • 举报
回复
引用 6 楼 Athenacle_ 的回复:
建议设置开关灯的mask
这样消耗就大了!!!
weidu23 2013-04-10
  • 打赏
  • 举报
回复
引用 5 楼 jiangwei19900106 的回复:
搜一下“位域”,应该能帮到你。
谢谢!
weidu23 2013-04-10
  • 打赏
  • 举报
回复
引用 3 楼 hugett 的回复:
C/C++ code ? 1 x &= ~(1<<(sig-1)) //x为原来的状态
这个是正解!
Athenacle_ 2013-04-10
  • 打赏
  • 举报
回复
建议设置开关灯的mask
jiangwei19900106 2013-04-10
  • 打赏
  • 举报
回复
搜一下“位域”,应该能帮到你。
hugett 2013-04-09
  • 打赏
  • 举报
回复
x &= ~(1<<(sig-1)) //x为原来的状态
xueren_love 2013-04-09
  • 打赏
  • 举报
回复
最好能把open 代码贴出来看下
xiaohuh421 2013-04-09
  • 打赏
  • 举报
回复
open 里面的实现有问题? 有open的代码吗? 如果open是别人写的接口, 就是楼主理解有误.

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧