- RISC-V體系結(jié)構(gòu)編程與實踐(第2版)
- 笨叔
- 310字
- 2024-09-23 17:56:03
3.6 位操作指令
RV64I指令集提供與(and)、或(or)以及異或(xor)等位操作指令,如表3.5所示。
表3.5 位操作指令

異或操作的真值表如下(“^”表示異或)。
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
從上述真值表可以發(fā)現(xiàn)以下3點。
● 0異或任何數(shù) = 任何數(shù)。
● 1異或任何數(shù) = 任何數(shù)取反。
● 任何數(shù)異或自己都等于0。
利用上述特點,異或操作有如下幾個非常常用的場景。
● 使某些特定的位翻轉(zhuǎn)。例如,若想把0b1010 0001的第1位和第2位翻轉(zhuǎn),則可以將該數(shù)與0b0000 0110進(jìn)行按位異或運算。
10100001 ^ 00000110 = 10100111
● 交換兩個數(shù)。例如,要交換a=0b1010 0001和b=0b0000 0110的值,可通過下列語句實現(xiàn)。
a = a^b; //a=1010 0111
b = b^a; //b=1010 0001
a = a^b; //a=0000 0110
● 在匯編代碼里把變量設(shè)置為0。
xor x1, x1
● 判斷兩個數(shù)是否相等。
bool is_identical(int a, int b)
{
return ((a ^ b) == 0);
}
推薦閱讀
- Learning Single:page Web Application Development
- 玩轉(zhuǎn)Scratch少兒趣味編程
- Google Flutter Mobile Development Quick Start Guide
- PyQt從入門到精通
- Access 2010數(shù)據(jù)庫基礎(chǔ)與應(yīng)用項目式教程(第3版)
- Full-Stack React Projects
- 組態(tài)軟件技術(shù)與應(yīng)用
- C程序設(shè)計實踐教程
- 區(qū)塊鏈底層設(shè)計Java實戰(zhàn)
- Mobile Device Exploitation Cookbook
- OpenGL Data Visualization Cookbook
- Learning YARN
- Java EE Web應(yīng)用開發(fā)基礎(chǔ)
- Python預(yù)測分析與機器學(xué)習(xí)
- Redmine Cookbook