![]() |
發布時間: 2022-2-16 17:22
正文摘要:各位大神,我是個小白,在其他大神程序里看到這樣的寫法,有些不太明白,如下圖 其中這句TMOD &= ~(1<<6);//Timer1 set As Timer, 中的(1<<6);意思是把01h左移6位,由二進制數0000 0001變為0100 ... |
一旦你看懂了,就知道這種寫法非常直觀容易理解。 |
1<<6可以輕松知道對數據的第六位進行操作,但是你寫0x40雖然大家也看得懂,但是得在腦海中轉化一下吧,看程序時轉化幾個可能沒問題,但多了可能就會煩也容易出錯。有大佬說過,當你能像讀文章那樣輕松閱讀一份代碼時,不一定是你的編程能力提升了,可能是編寫這份代碼的人有著深厚的功底!增加程序可讀性是非常重要的,所以應該學著養成這種習慣。 |
主要是看起來直觀,方便后期維護代碼時,一眼能明白這么操作的目的。TMOD &= ~(1<<6); 將寄存器TMOD的位BIT6置為零。只是每個人的程序抒寫風格問題。 |
1<<6是直接位賦值,意思是把bit6置為“1“,其它位不變,不是樓主你所說的是"移位": |
1<<6操作的哪一位看起來很直觀,如果是一個數值的話還得多想一下拐個彎 |
看著芯片寄存器手冊,就很清楚了,配置寄存器哪個位為0或1,兩種寫法原理都是一樣 |