Re: [問題] 二進制的累加!

看板C_and_CPP作者 (Kevin)時間16年前 (2009/03/15 17:25), 編輯推噓2(209)
留言11則, 2人參與, 最新討論串2/4 (看更多)
※ 引述《apol1033 (Frog )》之銘言: : 太久沒看C++忘記如何用指令了= =" : 是用C++來控制8051單晶片 : 想問一下如果想輸出一個訊號來控制8個LED : 他的變化是 : 00000001 : 00000011 : 00000111 : 00001111 : 00011111 : 00111111 : 01111111 : 11111111 : 01111111 : 00111111 : 00011111 : 00000111 : 00000011=>這邊再跑回最上面 : 原本是想用二進制然後慢慢加,不過中間的差距不同所以不行用 : 也想過用陣列,不過也搞不懂怎麼使用 : 希望有人能幫解惑一下 unsigned char led_sig=1; bool right2left=true; while(loop) { if(right2left) { led_sig<<=1; ++led_sig; if(led_sig==0xff) right2left=false; } else { led_sig>>=1; if(led_sig==1) right2left=true; } } 我可能會這樣寫 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.177.115 ※ 編輯: hylkevin 來自: 220.136.177.115 (03/16 01:25) ※ 編輯: hylkevin 來自: 220.136.177.115 (03/16 01:25)

03/16 01:32, , 1F
想問一下bool right2left=true;是代表什麼?因為沒學過
03/16 01:32, 1F

03/16 01:33, , 2F
bool的指令...
03/16 01:33, 2F

03/16 01:36, , 3F
還有if(right2left)裡面的判斷好像沒有寫條件進去
03/16 01:36, 3F

03/16 01:49, , 4F
有點了解怎麼運作,事先宣告訊號為1而已,然後宣告一個左
03/16 01:49, 4F

03/16 01:50, , 5F
右位移的判斷碼,先執行左移,訊號內容向左移一位元然後
03/16 01:50, 5F

03/16 01:52, , 6F
加1,重複至訊號為0xff停止左移開始執行右移動作,不過裡
03/16 01:52, 6F

03/16 01:52, , 7F
面細節的一些控制符號有些沒看過就是了= ="
03/16 01:52, 7F

03/16 02:21, , 8F
if可以評估變數值 0為false 非0為true
03/16 02:21, 8F

03/16 02:22, , 9F
bool是C++才有的預設型別 只有true和false兩種值
03/16 02:22, 9F

03/16 02:23, , 10F
loop是你自己控制要不要繼續的旗標
03/16 02:23, 10F

03/16 02:26, , 11F
led_sig用unsigned因為負值的右移有些編譯器會補1在前
03/16 02:26, 11F
文章代碼(AID): #19lJduW1 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
3
9
以下文章回應了本文
完整討論串 (本文為第 2 之 4 篇):
問題
3
9
文章代碼(AID): #19lJduW1 (C_and_CPP)