熱門: 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2020-4-25 19:21
正文摘要:rekey定義為無符號(hào)字符型,首先是將最低位左移歸零,但是后面的rekey不是數(shù)字 1 2 3 4... 累計(jì)增加變化的嗎 ,那在左移是啥操作,比如當(dāng)前rekey是5二進(jìn)制是0101,執(zhí)行左移是不是就是1010 ... |
f556 發(fā)表于 2020-4-26 21:05 ![]() |
xiaohu520 發(fā)表于 2020-4-26 16:11 I服了you。 ++是++,不要扯到移位。 <<位左移,是另一個(gè)語句,程序是一步一步執(zhí)行的,自己的思路也要一步步來,不能混為一談。移位就象一列火車,你在原地只能看到8節(jié)有貨無貨車箱xxxx【1011 0001】,左移動(dòng)1節(jié)后車箱后你看到【0110001?】,?處補(bǔ)0 。 想問一下你是女、還是男? |
xiaohu520 發(fā)表于 2020-4-26 13:23 rekey已徑左移一位了,為什么還是5呢,要按你這樣算也應(yīng)該是10+1吧 |
如果當(dāng)前rekey是5,二進(jìn)制是0000 0101,執(zhí)行左移一位就是0000 1010,然后再加1,就是0000 1011。 |
f556 發(fā)表于 2020-4-26 10:14 定義的unsignedchar rekey,rekey++,不就是1(0001) 2(0010) 3(0011) 4(0100)..這樣的累加的嗎?執(zhí)行到了rekey++這個(gè)指令的時(shí)候是不是就是rekey為某一個(gè)數(shù)值(unsigned char型的數(shù)值),然后下一個(gè)指令rekey<<1,是不是對(duì)當(dāng)前rekey加的值,進(jìn)行左移的? 想不明白rekey的移位只是一位一位的增加一.比如5+1之后的移位,和0101的移位 。是不是太笨了不適合學(xué)了 ![]() ![]() |
chomou 發(fā)表于 2020-4-26 08:30 第一次循環(huán) 0101左移1010加一1011(DIO是高電平1),這個(gè)加1不是5+1的嗎?為啥是位上加1的? |
xiaohu520 發(fā)表于 2020-4-26 08:10 位是二進(jìn)制的位,不要扯上十進(jìn)制。<< | & ....都是二進(jìn)制。除了++可以用十進(jìn)制(也可不用十進(jìn))。一定要放棄十進(jìn)制,用二進(jìn)制或16進(jìn)制。 多年前的高手說編程用十六進(jìn)制方便,后來自己理解了為什么用HEX。 |
比如rekay是5,第一次循環(huán) 0101左移1010加一1011(DIO是高電平1) 第二次循環(huán) 1011左移0110保持0110(DIO是低電平0) 第三次循環(huán) 0110左移1100加一1101 |
hantu 發(fā)表于 2020-4-26 01:22 unsingede char rekey不是 1(0001) 2(0010) 3(0110) 4(0100) 。。。 這樣方式的增加的? 那左移是不是就是對(duì) 1(0001) 2(0010) 3(0110) 4(0100) 。。。這些數(shù)左移的,比如當(dāng)前rekey加到了5(0101),下一個(gè)指令是對(duì)5左移,就是0101——變成1010了,我是搞不懂 rekey++不就是數(shù)字的累加嗎,而rekey左移不就是對(duì)當(dāng)前的數(shù)字二進(jìn)制進(jìn)行位移嗎?這樣就對(duì)不上最終結(jié)果了。 這一塊老打不通 ![]() |
csmyldl 發(fā)表于 2020-4-25 21:25 unsingede char rekey不是 1 2 3 4 。。。 這樣方式的增加的? 那左移是不是就是對(duì) 1 2 3 4 。。。這些數(shù)左移的 |
左移一位,就把最高位的給丟掉了,低位是補(bǔ)進(jìn)0來的,然后它DIO是高電平的話就加1(也就是從低位把一個(gè)bit的數(shù)據(jù)讀進(jìn)來,如果是低電平就什么不加就行了) 不管原來的rekey是什么內(nèi)容的,反正循環(huán)的8次就剛好讀進(jìn)來一個(gè)字節(jié)。 比如原來rekay是 ???????? 左移1位變成 ???????0 如果DIO是低電平0就保持這個(gè) 下一趟循環(huán)繼續(xù)左移變成 ??????00 如果DIO是高電平1的話就加上1變成了 ??????01 ... 循環(huán)結(jié)束時(shí)就讀夠了一個(gè)字節(jié)的數(shù)據(jù) |
這段程序是把讀到的鍵盤狀態(tài)存入rekey中,左移1位是為了騰出最右邊的1位空間,加1是當(dāng)狀態(tài)為高電平時(shí),把1存到上述所騰出的最右1位空間處 |
Powered by 單片機(jī)教程網(wǎng)