實現位變數反轉功能

2021-08-11 15:00:54 字數 686 閱讀 6846

在51微控制器中有個特殊的變數 sbit (位變數)

用它做乙個變數反轉是很簡單的, nuber=!nuber就實現了。

為什麼需要這個功能呢?

下面看乙個程式

假設 led是乙個燈,led=1為亮,led=0為滅。

那麼我想要他200毫秒閃爍,

while(1)

這是51微控制器的寫法。

在c語言中這樣是不可取的,因為我們不能去對映某一位,(其實是我不會把暫存器對映某一位出來操作)

所以通常我用的都是函式led_on(),led_off()

這樣的話程式就該這樣

while(1)

那麼我的while(1)中還有其它很多事情,我必須每10ms跑一次,那麼51實現200ms的閃爍應該這樣

while(1)

delay_ms(10); }

也很簡單,但是放在沒有位變數的stm32呢?程式是不是該想一想了?

我下面提供一下小方法

(1)flag=1; //需要應該標誌變數

while(1)

delay_ms(10);

} (2)

flag=1; //需要應該標誌變數

while(1)

delay_ms(10);

} 當然還有很多實現的方式,就不一樣列舉了。

位反轉演算法

比如0x12 0001 0010 反轉後變成 0100 1000 即0x48 static unsigned char buf 0x12,buf1 0 static int m,n for m 7,n 0 m n 0 m n buf buf1 將兩位元組short型別數高低位元組取出來 unsign...

位運算可以實現哪些功能

位運算可以實現哪些功能 左移1位乘以2,左移n位乘以2 n 右移1位除以2,右移n位除以2 n 舉個例子 includeusing namespace std int main int a 16 int b 25 乘除2 cout b 1 a 1 用到位運算中的按位與,和1按位與。如下 includ...

解析高效位反轉

把乙個二進位制數反轉 逆序輸出 的 如下 unsigned char fun4 unsigned char c 實際上,這段 的原理很簡單。就是先2位一組反轉,再4位一組反轉,最後8位一組反轉。其中,4位一組反轉時,把一組分為兩半看,每一半都已經反轉了,所以只要將兩半對調即可。8位一組同理。對於2 ...