找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1830|回复: 0
打印 上一主题 下一主题
收起左侧

位运算学习1

[复制链接]
跳转到指定楼层
楼主
ID:75926 发表于 2015-4-10 16:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天看到位运算了,然后书上提到一个问题:
已知两个函数int bis(int x, int m), int bic(int x, int m). 其中参数m为掩码,对于bis,就是在m为1的每个位置,修改x的对应位为1,并返回修改后的值。同理,对bic,修改x的对应位为0后返回。
现在要求只用这两个函数实现“或|”,“异或^”才做
“或”比较好实现,那么“异或”怎么实现呢?先推导一下:
从位运算表中可以得到:
x^y = (x|y) & (~(x&y))
因此:
x^y = ((~(x&y)) & x) | ((~(x&y)) & y)
= (((~x)|(~y)) & x) | (((~x)|(~y)) & y)
=(((~x)&x) | ((~y)&x)) | (((~x)&y) | ((~y)&y))
=((~y)&x) | ((~x)&y)
而函数bis相当于实现了“或”运算,函数bic相当于实现了 x & (~m).
所以,a,b的异或运算为:bis(bic(a,b), bic(b,a))



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表