【移位计算怪问题】C# uint64 左移位计算得到结果低位不是补0?为什么?好奇怪!
doublea=6493926.0;UInt64b=Convert.ToUInt64(a)<<42;得到结果居然是b=1011304451395800268后42位居然不...
double a = 6493926.0;
UInt64 b = Convert.ToUInt64(a)<<42 ;
得到结果居然是b=1011304451395800268
后42位居然不是0!
(我这边是要做编码,假设a变量在编码中用24位来存储,我的目的是去掉a这个数的前2位,取a的后22位,放到一个uint64类型的变量b的前22位去)
求问,该如何正确做到?
下图左计算器是 a = 6493926,又上是a<<40,右下是a<<42 展开
UInt64 b = Convert.ToUInt64(a)<<42 ;
得到结果居然是b=1011304451395800268
后42位居然不是0!
(我这边是要做编码,假设a变量在编码中用24位来存储,我的目的是去掉a这个数的前2位,取a的后22位,放到一个uint64类型的变量b的前22位去)
求问,该如何正确做到?
下图左计算器是 a = 6493926,又上是a<<40,右下是a<<42 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询