欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2861|回復: 13
收起左側

邏輯太差了搞不懂C語言數值增加與移動

[復制鏈接]
ID:90619 發表于 2020-4-25 19:21 | 顯示全部樓層 |閱讀模式
2.png rekey定義為無符號字符型,首先是將最低位左移歸零,但是后面的rekey不是數字 1  2  3 4... 累計增加變化的嗎 ,那在左移是啥操作,比如當前rekey是5二進制是0101,執行左移是不是就是1010了,然后在加1,就是6二進制就是0110,執行左移就是1100了?那是不是rekey就是當前加到的值得二進制移動的最終數?大神幫解析一下呢  感謝
回復

使用道具 舉報

ID:90619 發表于 2020-4-27 08:31 | 顯示全部樓層
f556 發表于 2020-4-26 21:05
I服了you。
++是++,不要扯到移位。

回復

使用道具 舉報

ID:282850 發表于 2020-4-26 21:05 | 顯示全部樓層
xiaohu520 發表于 2020-4-26 16:11
定義的unsignedchar rekey,rekey++,不就是1(0001) 2(0010) 3(0011) 4(0100)..這樣的累加的嗎? ...

I服了you。
++是++,不要扯到移位。
<<位左移,是另一個語句,程序是一步一步執行的,自己的思路也要一步步來,不能混為一談。移位就象一列火車,你在原地只能看到8節有貨無貨車箱xxxx【1011 0001】,左移動1節后車箱后你看到【0110001?】,?處補0 。
想問一下你是女、還是男?
回復

使用道具 舉報

ID:727081 發表于 2020-4-26 21:00 | 顯示全部樓層
xiaohu520 發表于 2020-4-26 13:23
第一次循環 0101左移1010加一1011(DIO是高電平1),這個加1不是5+1的嗎?為啥是位上加1的?

rekey已徑左移一位了,為什么還是5呢,要按你這樣算也應該是10+1吧
回復

使用道具 舉報

ID:213173 發表于 2020-4-26 18:39 | 顯示全部樓層
如果當前rekey是5,二進制是0000 0101,執行左移一位就是0000 1010,然后再加1,就是0000 1011。
回復

使用道具 舉報

ID:90619 發表于 2020-4-26 16:47 | 顯示全部樓層
f556 發表于 2020-4-26 10:14
位是二進制的位,不要扯上十進制。

3.png 寫了一個rekey程序調試,這個和那個rekey變化意義是一樣的嗎 ?調試下來就是數值得累加,沒有每個位在移動呢
回復

使用道具 舉報

ID:90619 發表于 2020-4-26 16:11 | 顯示全部樓層
f556 發表于 2020-4-26 10:14
位是二進制的位,不要扯上十進制。

定義的unsignedchar rekey,rekey++,不就是1(0001) 2(0010) 3(0011) 4(0100)..這樣的累加的嗎?執行到了rekey++這個指令的時候是不是就是rekey為某一個數值(unsigned char型的數值),然后下一個指令rekey<<1,是不是對當前rekey加的值,進行左移的?   想不明白rekey的移位只是一位一位的增加一.比如5+1之后的移位,和0101的移位    。是不是太笨了不適合學了 ,也知道移位是二進制的位在移位,就是想不通,rekey++這一步是怎么和位進行聯系的,rekey++不就是數值得累加嗎   謝謝指點迷津
回復

使用道具 舉報

ID:90619 發表于 2020-4-26 13:23 | 顯示全部樓層
chomou 發表于 2020-4-26 08:30
比如rekay是5,第一次循環 0101左移1010加一1011(DIO是高電平1)
                           第二次循環 ...

第一次循環 0101左移1010加一1011(DIO是高電平1),這個加1不是5+1的嗎?為啥是位上加1的?
回復

使用道具 舉報

ID:282850 發表于 2020-4-26 10:14 | 顯示全部樓層
xiaohu520 發表于 2020-4-26 08:10
unsingede char  rekey不是 1(0001) 2(0010) 3(0110) 4(0100) 。。。 這樣方式的增加的? 那左移 ...

位是二進制的位,不要扯上十進制。<< | & ....都是二進制。除了++可以用十進制(也可不用十進)。一定要放棄十進制,用二進制或16進制。
多年前的高手說編程用十六進制方便,后來自己理解了為什么用HEX。
回復

使用道具 舉報

ID:727081 發表于 2020-4-26 08:30 | 顯示全部樓層
比如rekay是5,第一次循環 0101左移1010加一1011(DIO是高電平1)
                           第二次循環 1011左移0110保持0110(DIO是低電平0)
                           第三次循環 0110左移1100加一1101
回復

使用道具 舉報

ID:90619 發表于 2020-4-26 08:10 | 顯示全部樓層
hantu 發表于 2020-4-26 01:22
左移一位,就把最高位的給丟掉了,低位是補進0來的,然后它DIO是高電平的話就加1(也就是從低位把一個bit的 ...

unsingede char  rekey不是 1(0001) 2(0010) 3(0110) 4(0100) 。。。 這樣方式的增加的? 那左移是不是就是對  1(0001) 2(0010) 3(0110) 4(0100) 。。。這些數左移的,比如當前rekey加到了5(0101),下一個指令是對5左移,就是0101——變成1010了,我是搞不懂 rekey++不就是數字的累加嗎,而rekey左移不就是對當前的數字二進制進行位移嗎?這樣就對不上最終結果了。  這一塊老打不通
回復

使用道具 舉報

ID:90619 發表于 2020-4-26 08:03 | 顯示全部樓層
csmyldl 發表于 2020-4-25 21:25
這段程序是把讀到的鍵盤狀態存入rekey中,左移1位是為了騰出最右邊的1位空間,加1是當狀態為高電平時,把1 ...

unsingede char  rekey不是 1 2 3 4 。。。 這樣方式的增加的? 那左移是不是就是對  1 2 3 4 。。。這些數左移的
回復

使用道具 舉報

ID:462827 發表于 2020-4-26 01:22 | 顯示全部樓層
左移一位,就把最高位的給丟掉了,低位是補進0來的,然后它DIO是高電平的話就加1(也就是從低位把一個bit的數據讀進來,如果是低電平就什么不加就行了)
不管原來的rekey是什么內容的,反正循環的8次就剛好讀進來一個字節。
比如原來rekay是            ????????
左移1位變成                  ???????0  如果DIO是低電平0就保持這個
下一趟循環繼續左移變成 ??????00  如果DIO是高電平1的話就加上1變成了 ??????01
...
循環結束時就讀夠了一個字節的數據

回復

使用道具 舉報

ID:235200 發表于 2020-4-25 21:25 | 顯示全部樓層
這段程序是把讀到的鍵盤狀態存入rekey中,左移1位是為了騰出最右邊的1位空間,加1是當狀態為高電平時,把1存到上述所騰出的最右1位空間處
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表