2013-10-03 330 views
7

我在代碼庫中看到^ 0。golang中的^ 0是什麼?

例子:

type stat struct { 
    ... 
    min int64 
    ... 
} 

newStat := stat{min: ^0} 

是什麼^ 0是什麼意思?

回答

18

根據the docs

^x的按位求補爲m^X,其中M = 「所有位設置爲1」 爲

無符號x和M = -1簽署X

這意味着^0與其他主流語言中的~0相同。

two's complement(大多數編程語言採用)上,零補碼的值爲-1(在簽名數據類型上)。所以這是一種寫法:

newStat := stat{min: -1} 
+0

嘿謝謝你的回覆。我是一個Go初學者,我仍然不知道這是什麼意思。什麼是〜0?什麼是按位補充?你能澄清一下嗎? 在此先感謝! – samol

+3

按位互補是從數據類型中取出每一位並將其反轉。例如,4位二進制中的0是0000,它的逐位補碼是1111.與4位二進制中的10是1010並且其補碼是0101相同。 –

+1

有關進一步參考,請閱讀[按位操作](http:///en.wikipedia.org/wiki/Bitwise_operation)。 – justinas