【发布时间】:2009-12-19 17:38:11
【问题描述】:
我正在研究 C# 中的移位运算符,试图找出答案 何时在我的代码中使用它们。
我找到了答案,但对于 Java,您可以:
a) 使更快整数乘除运算:
*4839534 * 4* 可以这样完成: 4839534
或
543894 / 2 可以这样完成:543894 >> 1
对于大多数处理器而言,移位运算比乘法快得多。
b) 将字节流重组为 int 值
c) 用于加速图形操作,因为红色、绿色和蓝色由单独的字节编码。
d) 将小数字打包成一个长...
对于 b、c 和 d,我无法想象这里有一个真实的样本。
有谁知道我们是否可以在 C# 中完成所有这些项目? shift 运算符在 C# 中是否有更多实际用途?
【问题讨论】:
-
"进行更快的整数乘除运算。"不要这样做。现代编译器会为你做这件事。它只会让你的代码更难阅读。
-
在 1980 年代 一些 严重优化的 C 编译器中,移位比乘法更快。这是一个城市传奇,它仍然有所作为。