C# 在C中获得双精度的低位#
我得到了一个双变量中的数字 如何仅取数字的4个低位并将其保存到其他位置?首先将其(逐位)转换为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
长
,以便您可以应用逐位运算符:
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
即可。