[英]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
0xFF00
和0xF000
。
我也嘗試不使用乘法(這會使乘法容易得多,所以我不想使用它)。
我會說:
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.