繁体   English   中英

这个 `^` 运算符在 Dart 中是什么意思?

[英]What does this `^` operator mean in Dart?

这个^运算符在 Dart 中是什么意思?

int get hashCode => cityName.hashCode ^ temperatureCelsius.hashCode;

在许多语言中,包括 Dart, ^运算符代表按位异或运算。

从概念上讲,它的作用是将其两个操作数都转换为长度相等的位串,并将异或逻辑应用于每对位。

例子:

假设我们的输入是数字 7 和数字 14。这是它们的二进制(位串)表示:

 7: 0111
14: 1110

在这种情况下,结果将是:

 9: 1001

在您的示例中,这似乎用于从其他两个 hash 值创建 hash 。 这是组合两个 hash 值的“默认”方式,原因在这里解释:

为什么 XOR 是组合哈希的默认方式?

^运算符是用户定义的二元运算符。 class 可以将其定义为任何它想要的意思。 一些内置的 Dart 类有一个^运算符,即intbool

对于bool^运算符是异或运算,当且仅当仅当一个操作数为真时结果为true (而另一个为false ,因为它必须是bool )。

对于int^运算符是按位异或运算。 integer 数字被解释为它们的二进制补码表示的位,并且同一 position 处的两个操作数的位是异或,因此当且仅当两个位中的一个恰好为 1 时,结果为 1。 :

  var x = 27;    // bits: ..0011011
  var y = 37;    // bits: ..0100101
  var z = x ^ y; // bits: ..0111110 - aka 62

非平台类也可以实现运算符,例如在fixnum package 中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM