“<<”的含义是什么?在TCL?

时间:2011-07-22 08:53:36

标签: tcl bitwise-operators

我知道“<<”有点操作。但我不明白它在TCL中的功能是什么,我们什么时候应该使用它?

任何人都可以帮我这个吗?

4 个答案:

答案 0 :(得分:6)

Tcl表达式中的<<运算符是arithmetic bit shift left。它非常类似于C和许多其他语言中的等价物,并且将在所有相同的地方使用(它在逻辑上相当于乘以2的适当幂,但通常建议在考虑位时使用移位和a在思考数字时会倍增。)

请注意,与许多其他语言(从Tcl 8.5开始)的一个关键区别在于它不会“从前面丢弃位”;语言实现会根据需要自动使用更多的表示,以便永远不会丢失信息。通过使用单独的二进制掩码操作(例如,& ((1 << $numBits) - 1))来丢弃位。

答案 1 :(得分:2)

&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;左移操作员。我想到的一些是:

  • 逐位处理。移动一个数字并观察最高位数等。它比您想象的更方便。
  • 如果在十进制数系统中向数字加零,则有效地将其乘以10.移位有效地意味着乘以2.这实际上转换为比特移位的低级汇编命令,其计算周期比乘法更低这用于游戏行业的效率。移位两次(&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&gt;)将它乘以4,依此类推。

我相信还有很多其他人。

答案 2 :(得分:2)

例如,<<操作与C没有太大区别。当你需要将整数值的位移到左边时使用它。在执行细微数字运算时,例如实现哈希函数或从输入字节流反序列化某些内容时,这偶尔会有用(但请注意,[binary scan]几乎涵盖了此类事物所需的全部内容)。有关更一般的信息,请参阅this Wikipedia article或类似的内容,这与Tcl无关。

答案 3 :(得分:1)

'&lt;&lt;&lt;是左移位。您必须将其应用于整数。该算术运算符将位移到左侧。 例如,如果要在Tcl解释器tclsh中将数字1向左移动两次,请键入:

 expr { 1 << 2 } 

该命令将返回4.

请特别注意解释器在您的平台上保留的最大整数。