找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3664|回復(fù): 21
收起左側(cè)

C語言<<或>>的問題

  [復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 10 黑幣 回復(fù)本帖可獲得 5 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
ID:1079270 發(fā)表于 2023-6-17 13:32 | 顯示全部樓層 |閱讀模式
if(BLINK_KEY == 0)
           {         
               if(BLINK_Shake == Long_Set_Sak)
              {
                       if(Blink_State ++ >= 3)        Blink_State = 0;  
                       DataBuffer[0] &= 0xcf;
                       DataBuffer[0] |= (Blink_State << 4);
                       spi_send_en = 1;
               }
               if(BLINK_Shake++ >(Long_Set_Sak + 1))                BLINK_Shake = Long_Set_Sak + 1;
           }

>>4是去掉低四位
<<4是為什么

回復(fù)

使用道具 舉報(bào)

ID:94031 發(fā)表于 2023-6-17 14:09 | 顯示全部樓層
>>4是右移四位
回復(fù)

使用道具 舉報(bào)

ID:384109 發(fā)表于 2023-6-17 14:13 | 顯示全部樓層
不是去掉,是左右移位
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2023-6-17 14:18 | 顯示全部樓層
<<是左移,右邊補(bǔ)零。
回復(fù)

使用道具 舉報(bào)

ID:712097 發(fā)表于 2023-6-17 14:41 | 顯示全部樓層
<<4左移4就是:丟棄高4位,0補(bǔ)低4位
如:二進(jìn)制數(shù) 1011 0110 <<4 就變成 0110 0000

>>4右移4就是:丟棄低4位,0補(bǔ)高4位
如:二進(jìn)制數(shù) 1011 0110 >>4 就變成 0000 1011

以上只針對無符號整型數(shù)據(jù),其它數(shù)據(jù)類型更復(fù)雜一些。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:908826 發(fā)表于 2023-6-17 15:37 | 顯示全部樓層
5樓正解,這個(gè)要分邏輯移位和算術(shù)移位的,建議找本書好好看看這一部分
回復(fù)

使用道具 舉報(bào)

ID:149799 發(fā)表于 2023-6-17 17:04 | 顯示全部樓層
向5樓致敬,講解的詳細(xì),多謝。
回復(fù)

使用道具 舉報(bào)

ID:965189 發(fā)表于 2023-6-17 22:27 | 顯示全部樓層
<<左移4位,低4位補(bǔ)0。
回復(fù)

使用道具 舉報(bào)

ID:52571 發(fā)表于 2023-6-18 07:44 | 顯示全部樓層
低四位左移到高四位,低四位補(bǔ)0
回復(fù)

使用道具 舉報(bào)

ID:1079270 發(fā)表于 2023-6-21 10:42 | 顯示全部樓層
chxelc 發(fā)表于 2023-6-17 14:41
4 就變成 0000 1011

以上只針對無符號整型數(shù)據(jù),其它數(shù)據(jù)類型更復(fù)雜一些。

參考了五樓的說明,已解決問題,謝謝大家參與討論
回復(fù)

使用道具 舉報(bào)

ID:1085316 發(fā)表于 2023-6-21 10:55 | 顯示全部樓層
>>4不是去掉第四位,這是右移4位,空出的高位用0補(bǔ)齊,例如:0110 0010   右移4位以后的結(jié)果為0000 0110
<<4為左移4位,空出的低位用0補(bǔ)齊,例如:0110 0010   左移4位以后的結(jié)果為0010 0000
回復(fù)

使用道具 舉報(bào)

ID:1066657 發(fā)表于 2023-6-21 11:21 | 顯示全部樓層
<<4  , DataBuffer[0] |= (Blink_State << 4);  將狀態(tài)高四位去掉,低位向高位移動4位,同時(shí)低四位補(bǔ)0
回復(fù)

使用道具 舉報(bào)

ID:1085336 發(fā)表于 2023-6-21 11:47 | 顯示全部樓層
移位后用0替代
回復(fù)

使用道具 舉報(bào)

ID:1063563 發(fā)表于 2023-6-25 10:34 | 顯示全部樓層
左移4位,并補(bǔ)4個(gè)0。
回復(fù)

使用道具 舉報(bào)

ID:1085906 發(fā)表于 2023-6-25 20:20 | 顯示全部樓層
<<4 是左移4位,把低四位移到高四位,例如 1111 0001    <<4    變成   0001 0000
回復(fù)

使用道具 舉報(bào)

ID:1087595 發(fā)表于 2023-7-10 10:16 | 顯示全部樓層
建議偶爾去b站復(fù)習(xí)復(fù)習(xí)基礎(chǔ)知識在學(xué)習(xí)新知識的時(shí)候別忘了回頭看看
回復(fù)

使用道具 舉報(bào)

ID:1087984 發(fā)表于 2023-7-10 16:55 | 顯示全部樓層
你可以自己先表示成二進(jìn)制移位看看
回復(fù)

使用道具 舉報(bào)

ID:1088211 發(fā)表于 2023-7-12 14:23 | 顯示全部樓層
<<,>>是左右移位
回復(fù)

使用道具 舉報(bào)

ID:1074254 發(fā)表于 2023-7-13 16:24 | 顯示全部樓層
對于2進(jìn)制,>>4往右移動四位,左邊缺失補(bǔ)零,<<4往左移動四位,右邊確實(shí)補(bǔ)零。
對于10進(jìn)制表示來說,往左移四位等于原數(shù)乘上2的4次方(16),往右移四位等于原數(shù)除以2的4次方(16)
回復(fù)

使用道具 舉報(bào)

ID:189206 發(fā)表于 2023-7-13 16:44 | 顯示全部樓層
>>4這是右移4位,然后高四位補(bǔ)零
回復(fù)

使用道具 舉報(bào)

ID:1088376 發(fā)表于 2023-7-14 08:24 | 顯示全部樓層
不是去掉,是左右移位
回復(fù)

使用道具 舉報(bào)

ID:1038977 發(fā)表于 2023-7-14 10:23 | 顯示全部樓層
>>4是右移四位,<<4是左移四位,就比如一個(gè)二進(jìn)制數(shù)原來為10110110,如果取這個(gè)數(shù)10110110>>4的話,就是整體的這個(gè)數(shù)往右移了四位,那么原本的低四位就移出去了,而高四位就恰好移到了低四位的位置,后面移過來的就補(bǔ)零,也就是最后數(shù)值為00001011,也就如你所說好像去掉了低四位,同理<<4也是這個(gè)原理
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表