C# 在C中获得双精度的低位#

C# 在C中获得双精度的低位#,c#,bit,C#,Bit,我得到了一个双变量中的数字 如何仅取数字的4个低位并将其保存到其他位置?首先将其(逐位)转换为长,以便您可以应用逐位运算符: long bits = BitConverter.DoubleToInt64Bits(your_double); int lowest_4_bits = (int)bits & 0xF; 首先将其(逐位)转换为long,以便应用逐位运算符: long bits = BitConverter.DoubleToInt64Bits(your_double); int

我得到了一个双变量中的数字

如何仅取数字的4个低位并将其保存到其他位置?

首先将其(逐位)转换为
,以便您可以应用逐位运算符:

long bits = BitConverter.DoubleToInt64Bits(your_double);
int lowest_4_bits = (int)bits & 0xF;
首先将其(逐位)转换为
long
,以便应用逐位运算符:

long bits = BitConverter.DoubleToInt64Bits(your_double);
int lowest_4_bits = (int)bits & 0xF;

使用
BitConverter.GetBytes
获取字节数组中的所有8个字节。从那里你可以随心所欲地对待他们

如果您的意思是最低的四位,那么您需要:

byte[] bytes = BitConverter.GetBytes(someDouble);
int low4bits = bytes[0] & 0xf;

如果您要查找的实际上是四个字节,那么您可以在调用
BitConverter.GetBytes()
之后调用
Array.Copy()

使用
BitConverter.GetBytes
获取字节数组中的所有8个字节。从那里你可以随心所欲地对待他们

如果您的意思是最低的四位,那么您需要:

byte[] bytes = BitConverter.GetBytes(someDouble);
int low4bits = bytes[0] & 0xf;

如果您要查找的实际上是四个字节,那么在调用
BitConverter.GetBytes()
之后,您可以调用
Array.Copy()

浮点数现在有位了吗?你是说数字吗?@leppie为什么他们没有比特?@harold:比特只是一个大小指示。它们由符号、尾数和指数组成。就其本身而言,存储中使用的位是非常没有意义的。@leppie它们有一个定义明确的含义(在C#中没有浮点格式的选择,它是IEEE 754 binary64),所以这就是问题所在。不过,我并没有马上看出最低4位对运算有什么用处。@YonatanNir好吧,那就是。。令人失望的那么只需
value&0xF
。浮点数现在有位了吗?你是说数字吗?@leppie为什么他们没有比特?@harold:比特只是一个大小指示。它们由符号、尾数和指数组成。就其本身而言,存储中使用的位是非常没有意义的。@leppie它们有一个定义明确的含义(在C#中没有浮点格式的选择,它是IEEE 754 binary64),所以这就是问题所在。不过,我并没有马上看出最低4位对运算有什么用处。@YonatanNir好吧,那就是。。令人失望的只需
值&0xF
即可。