Heim > Backend-Entwicklung > Golang > Unterschied in den Ergebnissen bitweiser Verschiebungsberechnungen

Unterschied in den Ergebnissen bitweiser Verschiebungsberechnungen

WBOY
Freigeben: 2024-02-08 21:11:13
nach vorne
1062 Leute haben es durchsucht

Unterschied in den Ergebnissen bitweiser Verschiebungsberechnungen

PHP-Editor Zimo bringt Ihnen einen Artikel über „Der Unterschied in den Ergebnissen der bitweisen Verschiebungsberechnung“. In der Computerprogrammierung ist die Bitverschiebungsoperation eine übliche Operation, mit der Binärzahlen nach links oder rechts verschoben werden können. Verschiedene Programmiersprachen können jedoch Unterschiede bei der Verarbeitung der Ergebnisse von Verschiebungsoperationen aufweisen, was von Entwicklern besondere Aufmerksamkeit erfordert. In diesem Artikel werden die Unterschiede in den Ergebnissen von Verschiebungsoperationen in verschiedenen Programmiersprachen detailliert vorgestellt und einige Beispiele bereitgestellt, um den Lesern zu helfen, Verschiebungsoperationen besser zu verstehen und anzuwenden. Unabhängig davon, ob Sie Anfänger oder Entwickler mit Programmierkenntnissen sind, können Sie sich in diesem Artikel nützliche Kenntnisse und Fähigkeiten aneignen.

Frageninhalt

Es gibt Unterschiede in der Ausgabe meines Go-Programms, insbesondere bei den Variablen x1 und x2. Hier ist der entsprechende Codeausschnitt:

package main

var n uint = 10
const N uint = 10

func main() {
    var x1 byte = (1 << n) / 100
    var x2 byte = (1 << N) / 100
    println(x1, x2)
}
Nach dem Login kopieren

Erwartete Ausgabe: 10 10

Tatsächliche Ausgabe: 0 10

Seien Sie neugierig auf die Gründe für die Unterschiede und suchen Sie nach Erklärungen.

Problemumgehung

Konstante Ausdrücke werden mit nicht spezifizierter Genauigkeit ausgewertet. Zugeordnet zu x2 的所有内容都是恒定的,因此它可以正确计算 210 / 100 = 1024 / 100 = 10。而在第一个表达式中,1 被视为 byte,这意味着它会立即移出。 1 必须被视为 byte in Spezifikation :

Wenn der linke Operand eines nicht konstanten Verschiebungsausdrucks eine untypisierte Konstante ist, wird er zunächst implizit in den Typ konvertiert, der angenommen wird, wenn der Verschiebungsausdruck nur durch seinen linken Operanden ersetzt wird.

1 ist die untypisierte Konstante auf der linken Seite, nvar 使得表达式变得非常量,因此 1 必须具有其受让人 x1 的类型,即 byte.

Das obige ist der detaillierte Inhalt vonUnterschied in den Ergebnissen bitweiser Verschiebungsberechnungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage