使用掩码在C#中进行位操作

Rob*_*vey 5 c# bit-manipulation

我需要一点C#中的位图操作帮助

我想取一个UInt16,隔离任意数量的位,并使用另一个UInt16值设置它们.

例:

10101010  -- Original Value
00001100  -- Mask - Isolates bits 2 and 3

Input        Output
00000000  -- 10100010
00000100  -- 10100110
00001000  -- 10101010
00001100  -- 10101110
                 ^^
Run Code Online (Sandbox Code Playgroud)

JSB*_*ոգչ 8

看起来你想要:

(orig & ~mask) | (input & mask)
Run Code Online (Sandbox Code Playgroud)

前半部分将orig其中的位置为零mask.那你就按位或对从位input即是mask.


Chr*_*lor 5

newValue = (originalValue & ~mask) | (inputValue & mask);

originalValue -> 10101010
inputValue    -> 00001000  
mask          -> 00001100 
~mask         -> 11110011

(originalValue & ~mask)
  10101010
& 11110011
----------
  10100010
      ^^
      Cleared isolated bits from the original value

(inputValue & mask)
  00001000  
& 00001100 
----------
  00001000


newValue =      
  10100010
| 00001000
----------
  10101010
Run Code Online (Sandbox Code Playgroud)