[問題] 請問一下這五個迴圈如何化簡?

看板C_and_CPP作者 (999就是久久久!)時間14年前 (2010/03/30 08:28), 編輯推噓2(203)
留言5則, 3人參與, 最新討論串1/1
我寫一個土法煉鋼的跑馬燈程式如下: //○不亮 //●亮 /* 16進制 8421 8421 0x81=左一右一 ●○○○ ○○○● 0x42=左二右二 ○●○○ ○○●○ 0x24=左三右三 ○○●○ ○●○○ 0x18=左四右四 ○○○● ●○○○ 0x24=左三右三 ○○●○ ○●○○ 0x42=左二右二 ○●○○ ○○●○ 0x81=左一右一 ●○○○ ○○○● */   while(1) { for(int j=0;j<8;j++) { P1OUT = 0x81; i <<= 1; delay(); } //●○○○ ○○○● //8 4 2 1 8 4 2 1 for(int j=0;j<8;j++) { P1OUT = 0x42; i <<= 1; delay(); } //○●○○ ○○●○ //8 4 2 1 8 4 2 1 for(int j=0;j<8;j++) { P1OUT = 0x24; i <<= 1; delay(); } //○○●○ ○●○○ //8 4 2 1 8 4 2 1 for(int j=0;j<8;j++) { P1OUT = 0x18; k >>= 1; delay(); } //○○○● ●○○○ //8 4 2 1 8 4 2 1 for(int j=0;j<8;j++) { P1OUT = 0x24; i <<= 1; delay(); } //○○●○ ○●○○ //8 4 2 1 8 4 2 1 for(int j=0;j<8;j++) { P1OUT = 0x42; i <<= 1; delay(); } //○●○○ ○○●○ //8 4 2 1 8 4 2 1 for(int j=0;j<8;j++) { P1OUT = 0x81; i <<= 1; delay(); } //●○○○ ○○○● //8 4 2 1 8 4 2 1 } 請問一下如何將他化簡(縮減)? 可以教一下嗎?感激不盡<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.17.10.177 ※ 編輯: han999 來自: 163.17.10.177 (03/30 08:39)

03/30 08:55, , 1F
你的 i 做啥用?
03/30 08:55, 1F

03/30 08:56, , 2F
建議寫法 變數 a=8 b=1.輸出 a>>1+b<<1 七次
03/30 08:56, 2F

03/30 09:52, , 3F
二樓是好方法.. 但是會有 precedence 問題
03/30 09:52, 3F

03/30 09:53, , 4F
(a>>1)+(b<<1)
03/30 09:53, 4F

03/30 13:57, , 5F
a 跟 b 還可以合併
03/30 13:57, 5F
文章代碼(AID): #1BiKMdSd (C_and_CPP)