第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

什么是按位移位(位移)運(yùn)算符以及它們?nèi)绾喂ぷ鳎?/h1>

什么是按位移位(位移)運(yùn)算符以及它們?nèi)绾喂ぷ??我一直在嘗試在業(yè)余時(shí)間學(xué)習(xí)C語言,其他語言(C#,Java等)具有相同的概念(通常是相同的運(yùn)算符)......我想知道是,在核心層,是什么位移(<<,>>,>>>)這樣做,可以幫助它什么問題解決,和周圍的彎曲什么潛伏的陷阱?換句話說,一個(gè)絕對(duì)的初學(xué)者指導(dǎo)比特移位的所有優(yōu)點(diǎn)。
查看完整描述

3 回答

?
精慕HU

TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊

按位運(yùn)算(包括位移)是低級(jí)硬件或嵌入式編程的基礎(chǔ)。如果您閱讀了設(shè)備規(guī)范甚至某些二進(jìn)制文件格式,您將看到字節(jié),字和dword,分為非字節(jié)對(duì)齊的位域,其中包含各種感興趣的值。訪問這些位字段以進(jìn)行讀/寫是最常見的用法。


圖形編程中一個(gè)簡(jiǎn)單的實(shí)例是16位像素表示如下:


  bit | 15| 14| 13| 12| 11| 10| 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1  | 0 |

      |       Blue        |         Green         |       Red          |

要獲得綠色值,您可以這樣做:


 #define GREEN_MASK  0x7E0

 #define GREEN_OFFSET  5


 // Read green

 uint16_t green = (pixel & GREEN_MASK) >> GREEN_OFFSET;

說明


為了獲得綠色ONLY的值,它從偏移5開始并以10結(jié)束(即6位長(zhǎng)),你需要使用一個(gè)(位)掩碼,當(dāng)應(yīng)用于整個(gè)16位像素時(shí),它將產(chǎn)生只有我們感興趣的部分。


#define GREEN_MASK  0x7E0

相應(yīng)的掩碼為0x7E0,二進(jìn)制為0000011111100000(十進(jìn)制為2016)。


uint16_t green = (pixel & GREEN_MASK) ...;

要應(yīng)用蒙版,請(qǐng)使用AND運(yùn)算符(&)。


uint16_t green = (pixel & GREEN_MASK) >> GREEN_OFFSET;

應(yīng)用掩碼后,最終會(huì)得到一個(gè)16位數(shù),這個(gè)數(shù)字實(shí)際上只是一個(gè)11位數(shù),因?yàn)樗腗SB位于第11位。綠色實(shí)際上只有6位長(zhǎng),所以我們需要使用右移(11 - 6 = 5)來縮小它,因此使用5作為offset(#define GREEN_OFFSET  5)。


同樣常見的是使用位移進(jìn)行快速乘法和除以2的冪:


 i <<= x;  // i *= 2^x;

 i >>= y;  // i /= 2^y;


查看完整回答
反對(duì) 回復(fù) 2019-05-28
  • 3 回答
  • 0 關(guān)注
  • 1888 瀏覽

添加回答

了解更多

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)