找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1385|回復(fù): 6
收起左側(cè)

單片機(jī)如何用一條指令,讓寄存器其中兩位同時(shí)取反?

[復(fù)制鏈接]
ID:709761 發(fā)表于 2022-4-9 09:18 | 顯示全部樓層 |閱讀模式
如何用一條指令,讓寄存器其中兩位同時(shí)取反。
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2022-4-9 11:08 | 顯示全部樓層
用^=
char A = 0xA5;//B10100101
A ^= (0x03 << 2);//B00001100

A就會(huì)變?yōu)?xA9//B10101001
回復(fù)

使用道具 舉報(bào)

ID:709761 發(fā)表于 2022-4-9 11:33 | 顯示全部樓層
lkc8210 發(fā)表于 2022-4-9 11:08
用^=
char A = 0xA5;//B10100101
A ^= (0x03

為什么不寫成A ^= 0x0c;
回復(fù)

使用道具 舉報(bào)

ID:827243 發(fā)表于 2022-4-9 12:56 | 顯示全部樓層
樓上正解,記住與0異或,值不變,與1異或,值取反。
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-4-9 13:33 | 顯示全部樓層
李冬 發(fā)表于 2022-4-9 11:33
為什么不寫成A ^= 0x0c;

容易讀。而且他的寫法里面<<2操作在編譯期間就算完了,不會(huì)讓單片機(jī)實(shí)時(shí)運(yùn)算增加運(yùn)算時(shí)間。
回復(fù)

使用道具 舉報(bào)

ID:161164 發(fā)表于 2022-4-9 13:37 來自觸屏版 | 顯示全部樓層
李冬 發(fā)表于 2022-4-9 11:33
為什么不寫成A ^= 0x0c;

因?yàn)?x03方便讀記
要變0x0C位移一下就可以
回復(fù)

使用道具 舉報(bào)

ID:887371 發(fā)表于 2022-4-9 14:35 | 顯示全部樓層
李冬 發(fā)表于 2022-4-9 11:33
為什么不寫成A ^= 0x0c;

可以這樣寫。
  1. a^=(1<<2)|(1<<3);//bit2 3取反
  2. a^=(1<<0)|(1<<2)|(1<<4)|(1<<6);//bit0 2 4 6取反
復(fù)制代碼



我覺得這樣寫更直觀。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表