鱼C论坛

 找回密码
 立即注册
查看: 9832|回复: 79

[技术交流] 应用掩码运算表示布尔运算

  [复制链接]
发表于 2013-2-2 05:47:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
历史:

从20世纪70年代末到80年代末,Digital Equipment的VAX计算机是一种非常流行的机型。它没有布尔运算AND和OR指令,只有bis(位设置)和bic(位清除)这两种指令。两种指令的输入都是一个数据字 x 和一个掩码字 m。它们生成一个结果 z,z 是由根据 m 的掩码位来修改 x 的位得到的。使用 bis 指令,这种修改就是在 m 为 1 的每个位置上,将z对应的位设置为 1。使用bic指令,这种修改就是在 m 为 1 的每个位置,将 z 对应的位设置为 0。


题目:

为了清除因为这些运算与C语言位级运算的关系,假设我们有两个函数bis和bic来实现位设置和位清除操作。

只想用这两个函数,而不使用任何其他C语言运算,来实现按位 | 和 ^ 运算。

补充下列缺失的代码,以便程序可以按要求完成操作。
  1. int bis(int x, int m);        // 在x上m为1的每个位置修改为1,并返回结果
  2. int bic(int x, int m);        // 在x上m为1的每个位置修改为0,并返回结果

  3. // 要求通过调用 bis 或 bic 函数实现 x|y 的功能,并返回结果
  4. int bool_or(int x, int y)
  5. {
  6.         int result = _________;
  7.         return result;
  8. }

  9. // 要求通过调用 bis 或 bic 函数实现 x^y 的功能,并返回结果
  10. int bool_xor(int x, int y)
  11. {
  12.         int result = _________;
  13.         return result;
  14. }
复制代码


详细解答(回复可见):
游客,如果您要查看本帖隐藏内容请回复


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-2 09:17:54 | 显示全部楼层
除了彙編,我還真的想不出什麼辦法了,座等答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-2 09:35:18 | 显示全部楼层
我就看看啊~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-2 09:44:25 | 显示全部楼层
我就看看 不说话
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-2 10:13:20 | 显示全部楼层
多谢楼主分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-2 12:24:55 | 显示全部楼层
看看了{:1_1:}{:1_1:}{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-2 15:57:53 | 显示全部楼层
:D赞一个!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-25 12:39:11 | 显示全部楼层
呵呵,看看。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-25 13:40:50 | 显示全部楼层
我是来看答案的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-19 09:17:20 | 显示全部楼层
哈哈哈哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-26 10:56:17 | 显示全部楼层
看看啊啊啊啊啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-27 18:41:57 | 显示全部楼层
学习学习来看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-28 20:23:46 | 显示全部楼层
虽不明,但觉厉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-28 23:28:07 | 显示全部楼层
拿回去做做,哈哈!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-29 10:20:17 | 显示全部楼层
看看看看看啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-7 06:10:59 | 显示全部楼层
楼主加油,鱼C加油!我们都看好你哦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-7 19:46:36 | 显示全部楼层
本帖最后由 ederss 于 2013-4-7 19:48 编辑

bis(x, y);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-3 09:54:01 | 显示全部楼层
第二问是这样吗?
  1. bic( bis( x,y ) , bis( bic( x,~y ) , ~bis( x,y ) ) )
复制代码
看看老师怎么写的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-3 20:00:48 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-5-4 00:27:11 | 显示全部楼层
感恩无私的分享与奉献 :)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 11:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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