应用掩码运算表示布尔运算
历史:从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 *****
除了彙編,我還真的想不出什麼辦法了,座等答案 我就看看啊~ 我就看看 不说话 多谢楼主分享 看看了{:1_1:}{:1_1:}{:1_1:} :D赞一个! 呵呵,看看。。。。。。。。
我是来看答案的 哈哈哈哈哈哈 看看啊啊啊啊啊 学习学习来看看 虽不明,但觉厉 拿回去做做,哈哈!!! 看看看看看啊 楼主加油,鱼C加油!我们都看好你哦! 本帖最后由 ederss 于 2013-4-7 19:48 编辑
bis(x, y); 第二问是这样吗?bic( bis( x,y ) , bis( bic( x,~y ) , ~bis( x,y ) ) )看看老师怎么写的 强烈支持楼主ing…… 感恩无私的分享与奉献 :)