如何使用AND,XOR和shift来按位计算OR?

Fla*_*ius 5 bit-manipulation

问题似乎很好

我有一个只实现AND,XOR,SHL和SHR的虚拟机,但我必须执行"OR 0x01"操作.

use*_*727 6

首先对以下两个变量进行正确的按位计算就足够了,因为它们涵盖了所有组合:
A = 0101
B = 0011

我们想要
0101
0011
A或B
0111

对于xor我们得到

0101
0011
A xor B
0110

为了,我们得到

0101
0011
A和B
0001

所以,如果我们用xor连接它们,我们就完成了.

(A x或B)xor(A和B)