簡體   English   中英

使用一個數字移位4位

[英]Shifting 4 bits using a single number

我必須編寫一個將整數作為參數(0、1、2或3)的方法。 我必須用它來創建具有0,所以一個位掩碼,如果參數是0,比位掩碼將FFF0 ,對於1: FF0F ,2: F0FF ,3: 0FFF 我正在嘗試不對其進行硬編碼。

我嘗試過的方法,但只能部分起作用:

int bob = 0xFFFF;
int multi = 2;

multi = multi << param;

這適用於1和2,即使對於那些,也使其0xF000 0xFF000xF000

我也嘗試不使用乘法(這會使乘法容易得多,所以我不想使用它)。

我會說:

0xFFFF - (0xF << (param * 4))

像這樣:

bitmask = 0xFFFF;
bitmaskmask = 0xF;
bitmaskmask = bitmaskmask << parameter * 4;
bitmask = bitmask ^ bitmaskmask;

有了您的輸入,您可以使用按位XOR操作實現所需的目標,如下所示:

xorMask = 0x000F << (4*multi) ;
result = bob ^ xorMask ;

這將在16位值的適當部分中創建一個具有1位的XOR掩碼,然后將其與輸入進行異或,將輸出中的那些位設為0。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM