2016-03-25 6 views
2

Die meisten Programmiersprachen verwenden ~, um eine unäre bitweise Notoperation darzustellen. Go, verwendet dagegen ^:Warum verwendet Go^statt ~ für unäre bitweise - nicht?

fmt.Println(^1) // Prints -2 

Warum haben die Go-Designer entscheiden, hier mit Konventionen zu brechen?

+0

Warum diese „gehalten, wie in erster Linie Meinung Basis“ wurde? Es ist nicht so, dass "Antworten [werden] fast ausschließlich auf Meinungen statt auf Fakten, Referenzen oder spezifischer Expertise basieren" - die akzeptierte Antwort enthält einen Link zu einer Erklärung innerhalb der Go-Sprachspezifikation! – user200783

Antwort

7

Weil^x äquivalent zu m^x ist mit m = "alle Bits auf 1 gesetzt" für vorzeichenloses x und m = -1 für signiertes x. Says so in the spec.

Es ist ähnlich, wie -x 0 - x