gpt4 book ai didi

c# - C# 中的奇数位移位结果

转载 作者:行者123 更新时间:2023-11-30 15:07:20 25 4
gpt4 key购买 nike

鉴于我的 uint 值为 2402914,我想获取最左边的 17 位,执行此代码时我的逻辑错误在哪里:

int testop = 0;
byte[] myArray = BitConverter.GetBytes(2402914);
fixed (byte* p = &myArray[0])
{
testop = *p >> 15;
}

我的预期输出是

50516.

最佳答案

您可能希望让您的期望与现实相符。右移相当于除以 2。您实际上是除以 2 十五次,这等同于除以 2^15 = 32768。请注意 2402914/32768 = 73(截断余数)。

因此,我希望结果是 73,而不是 50516。

事实上,

2402914_10 = 0000 0000 0010 0100 1010 1010 0110 0010_2

这样最左边的十七位就是

             0000 0000 0010 0100 1

注意

0000 0000 0010 0100 1 = 1 * 1 + 0 * 2 + 0 * 4 + 1 * 8 + 0 * 16 + 0 * 32 + 1 * 64 
= 73

请注意,您可以更简单地获得此结果

int testop = 2402914 >> 15;

关于c# - C# 中的奇数位移位结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6764582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com