ushort a,ushort b from(ushort)(a | b)to a with constant b

时间:2014-10-12 17:56:38

标签: c# bit-manipulation bitwise-operators

我正在处理b的数据,更详细地描述了a。至少这是我理解它的方式。任何进一步指向基本按位运算的链接都值得赞赏。我正在查看的所有对象都有b为0x8000。我需要找一个来自c。

我有:

ushort a
ushort b

a是2-5

b = 0x8000

ushort c = (ushort)( a | b )

我可以,如果是,我怎样才能从c到?

我试过(a& b),但这导致我不是a。我真的被卡住了,虽然我知道如果可能的话我应该很容易理解这些操作。

2 个答案:

答案 0 :(得分:1)

基本上,它是c AND NOT b

ushort a2 = (ushort) (c & ~b);

但仅仅因为 a来自2-5 并且小于0x8000 当ab开始重叠时,您会被搁浅。

答案 1 :(得分:1)

这只有在小于b的情况下才有效,从你给出的间隔开始是真实的。

这两种方法都有效:

a = (ushort) (c & ~b)  
a = (ushort) c - b