Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 逆位运算符_C#_Vb.net_Bit Manipulation - Fatal编程技术网

C# 逆位运算符

C# 逆位运算符,c#,vb.net,bit-manipulation,C#,Vb.net,Bit Manipulation,我做了一个很好的搜索,浪费了几个小时的时间,我不能做一个简单的反转:( 我有一个从文件中读取值(UInt16)的现有代码,并将位移到该文件中。我试图做的是将其反转,以便使用上面的现有代码保存和读取 我读过《比特变换》和这篇伟大的文章,但也可能是拉丁文 UInt16 tt = 12123; //10111101011011 int aa = tt >> 8 & 0xFF; //101111 = 47 8位消失。您永远无法将其取回。如果您有二进制110110中的值54 如果移位

我做了一个很好的搜索,浪费了几个小时的时间,我不能做一个简单的反转:(

我有一个从文件中读取值(UInt16)的现有代码,并将位移到该文件中。我试图做的是将其反转,以便使用上面的现有代码保存和读取

我读过《比特变换》和这篇伟大的文章,但也可能是拉丁文

UInt16 tt = 12123; //10111101011011
int aa = tt >> 8 & 0xFF; //101111 = 47

8位消失。您永远无法将其取回。

如果您有二进制110110中的值54

如果移位54>>2,则会将位向右移动

00110110
0001011(换班一次)
00001101(两班)


结果是13。如果你向左移动13。13问题是什么?如何从
结果中获取
?如果是,为什么不
值=结果值保存在一个已经位移的文件中。我希望能够保存相同的值。如果我只移动>8&HFF,你就得不到相同的值。@Dmitry:这对重建不起作用ng
VALUE
。OP中的代码获取16位字的较高字节。您无法从8中重建16位,您还需要知道较低字节:
VALUE=较高,您不能(完全)重建)与此相反。因为在@Orifjon操作过程中,原始
值的某些部分丢失了,也许他应该尝试将UInt16读取为Uint32。这样他就不会丢失一点。
值>>8
字面上相当于说“除以2,八次,忽略其余部分。”
UInt16 tt = 12123; //10111101011011
int aa = tt >> 8 & 0xFF; //101111 = 47