小甲鱼 发表于 2013-2-2 05:47:01

应用掩码运算表示布尔运算

历史:

从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语言运算,来实现按位 | 和 ^ 运算。

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

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

// 要求通过调用 bis 或 bic 函数实现 x^y 的功能,并返回结果
int bool_xor(int x, int y)
{
      int result = _________;
      return result;
}

详细解答(回复可见):
**** Hidden Message *****

C开头 发表于 2013-2-2 09:17:54

除了彙編,我還真的想不出什麼辦法了,座等答案

122678672 发表于 2013-2-2 09:35:18

我就看看啊~

506076894 发表于 2013-2-2 09:44:25

我就看看 不说话

遒羽 发表于 2013-2-2 10:13:20

多谢楼主分享

summer0730 发表于 2013-2-2 12:24:55

看看了{:1_1:}{:1_1:}{:1_1:}

刘金伟 发表于 2013-2-2 15:57:53

:D赞一个!

tsp150600 发表于 2013-2-25 12:39:11

呵呵,看看。。。。。。。。

ˇ污.·点ゝ 发表于 2013-2-25 13:40:50

我是来看答案的

fishs 发表于 2013-3-19 09:17:20

哈哈哈哈哈哈

向往青莲 发表于 2013-3-26 10:56:17

看看啊啊啊啊啊

shw868 发表于 2013-3-27 18:41:57

学习学习来看看

墩子爸爸 发表于 2013-3-28 20:23:46

虽不明,但觉厉

eeeeelin 发表于 2013-3-28 23:28:07

拿回去做做,哈哈!!!

Small_Bright﹏ 发表于 2013-3-29 10:20:17

看看看看看啊

依旧林三 发表于 2013-4-7 06:10:59

楼主加油,鱼C加油!我们都看好你哦!

ederss 发表于 2013-4-7 19:46:36

本帖最后由 ederss 于 2013-4-7 19:48 编辑

bis(x, y);

姗姗莱咫 发表于 2013-5-3 09:54:01

第二问是这样吗?bic( bis( x,y ) , bis( bic( x,~y ) , ~bis( x,y ) ) )看看老师怎么写的

§狐鶴劍神☆ 发表于 2013-5-3 20:00:48

强烈支持楼主ing……

海马濑人 发表于 2013-5-4 00:27:11

感恩无私的分享与奉献 :)
页: [1] 2 3 4
查看完整版本: 应用掩码运算表示布尔运算