set 0xDEADBEEF, %o1
set 0x13579246, %o2
xor %o1, %o2, %o1
寄存器 o1 中会有什么?
set 0xDEADBEEF, %o1
set 0x13579246, %o2
and %o1, %o2, %o1
寄存器 o1 中会有什么?
分别是 CDFA2CA9 和 12059246,由于都是按位运算,所以这里没有架构依赖。请参阅:http ://en.wikibooks.org/wiki/SPARC_Assembly/Arithmetic_Instructions#Logic_Instructions
关于实际计算:
注意:
0x0 == 0b0000
0x1 == 0b0001
0x2 == 0b0010
...
0xf == 0b1111
由于在按位运算中,任何 2 的幂的基数中的每个数字都是独立的,因此为任何基数创建一个表很简单:
以 2 为底(^ 表示异或,& 表示与):
& 0 1
0 0 0
1 0 1
^ 0 1
0 0 1
1 1 0
并以 16 为基数(十六进制):
and 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 A B C D E F
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
2 0 0 2 2 0 0 2 2 0 0 2 2 0 0 2 2
3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3
4 0 0 0 0 4 4 4 4 0 0 0 0 4 4 4 4
5 0 1 0 1 4 5 4 5 0 1 0 1 4 5 4 5
6 0 0 2 2 4 4 6 6 0 0 2 2 4 4 6 6
7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
8 0 0 0 0 0 0 0 0 8 8 8 8 8 8 8 8
9 0 1 0 1 0 1 0 1 8 9 8 9 8 9 8 9
A 0 0 2 2 0 0 2 2 8 8 A A 8 8 A A
B 0 1 2 3 0 1 2 3 8 9 A B 8 9 A B
C 0 0 0 0 4 4 4 4 8 8 8 8 C C C C
D 0 1 0 1 4 5 4 5 8 9 8 9 C D C D
E 0 0 2 2 4 4 6 6 8 8 A A C C E E
F 0 1 2 3 4 5 6 7 8 9 A B C D E F
xor 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 A B C D E F
1 1 0 3 2 5 4 7 6 9 8 B A D C F E
2 2 3 0 1 6 7 4 5 A B 8 9 E F C D
3 3 2 1 0 7 6 5 4 B A 9 8 F E D C
4 4 5 6 7 0 1 2 3 C D E F 8 9 A B
5 5 4 7 6 1 0 3 2 D C F E 9 8 B A
6 6 7 4 5 2 3 0 1 E F C D A B 8 9
7 7 6 5 4 3 2 1 0 F E D C B A 9 8
8 8 9 A B C D E F 0 1 2 3 4 5 6 7
9 9 8 B A D C F E 1 0 3 2 5 4 7 6
A A B 8 9 E F C D 2 3 0 1 6 7 4 5
B B A 9 8 F E D C 3 2 1 0 7 6 5 4
C C D E F 8 9 A B 4 5 6 7 0 1 2 3
D D C F E 9 8 B A 5 4 7 6 1 0 3 2
E E F C D A B 8 9 6 7 4 5 2 3 0 1
F F E D C B A 9 8 7 6 5 4 3 2 1 0
第一种方法意味着进行 32 次非常简单的计算(在简单转换为二进制然后重新转换为十六进制之后),第二种方法意味着在您可能或可能无法提前准备的表中进行 8 次查找。