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)
看起来你想要:
(orig & ~mask) | (input & mask)
Run Code Online (Sandbox Code Playgroud)
前半部分将orig其中的位置为零mask.那你就按位或对从位input即是mask.
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)
| 归档时间: |
|
| 查看次数: |
17010 次 |
| 最近记录: |