我见过运营商>>
and <<
在我看过的各种代码中(我真正理解的都不是),但我只是想知道它们实际上做了什么以及它们的一些实际用途是什么。
如果班次就像x * 2
and x / 2
,与实际使用的真正区别是什么*
and /
运营商?有性能差异吗?
Here is 一个小程序 http://bitwisecmd.com/您可以在其中进行一些位操作,包括移位。
你有一个位的集合,并且你将其中一些移动到了它们的范围之外:
1111 1110 << 2
1111 1000
它从右侧开始填充新的零。 :)
0001 1111 >> 3
0000 0011
从左边开始填充。一种特殊情况是前导 1。它通常表示负值 - 取决于语言和数据类型。通常情况下,如果向右移动,第一位保持原样。
1100 1100 >> 1
1110 0110
并且它在多个班次中都是保守的:
1100 1100 >> 2
1111 0011
如果您不想保留第一位,则可以使用(据我所知,在 Java、Scala、C++、C 中,也许还有更多)三重符号运算符:
1100 1100 >>> 1
0110 0110
在另一个方向上没有任何等价物,因为它没有任何意义 - 也许在你非常特殊的背景下,但在一般情况下没有意义。
从数学上讲,左移一次是 *=2,左移 2 次是 *=4,依此类推。右移是 a /= 2 等等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)