簡體   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