>"运算符有什么作用?-6ren"> >"运算符有什么作用?-我在一段代码中遇到了这个语句: Int32 medianIndex = colorList.Count >> 1; colorList 是 System.Drawing.Color 类的列表。 现在该-6ren">
gpt4 book ai didi

c# - C# 中的 ">>"运算符有什么作用?

转载 作者:太空狗 更新时间:2023-10-29 19:59:04 25 4
gpt4 key购买 nike

我在一段代码中遇到了这个语句:

Int32 medianIndex = colorList.Count >> 1;

colorListSystem.Drawing.Color 类的列表。

现在该语句应该检索列表的中值索引.. 就像它的一半点.. 但我不明白 >> 符号是如何工作的以及“1 “应该给出中位数指数..我会很感激一些帮助:S

最佳答案

>>> 运算符执行 bit shift .

表达式 >> 1 几乎*与 /2 相同,因此程序员正在计算索引 colorList.Count/2是** median .要理解为什么会这样,您需要查看所涉及数字的二进制表示。例如,如果您的列表中有 25 个元素:

n     : 0 0 0 1 1 0 0 1 = 25
\ \ \ \ \ \ \
n >> 1: 0 0 0 0 1 1 0 0 = 12

一般来说,当你真的想执行除法时使用按位运算符是一种不好的做法。这可能是一个过早的优化,因为程序员认为执行按位运算而不是除法会更快。写一个除法会更清楚,如果这两种方法的性能相当,我也不会感到惊讶。

*对于所有正整数和所有负偶数,表达式 x >> 1 给出与 x/2 相同的结果。但是,对于负奇数,它给出了不同的结果。例如 -101 >> 1 == -51-101/2 == -50

**实际上,只有当列表中的元素数量为奇数时,才以这种方式定义中位数。对于偶数个元素,严格来说,此方法不会给出中位数。

关于c# - C# 中的 ">>"运算符有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3485528/

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