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) }
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, n
为 var
使得表达式变得非常量,因此 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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



short ist ein primitiver Datentyp in Java, der eine 16-Bit-Ganzzahl mit Vorzeichen im Bereich von -32.768 bis 32.767 darstellt. Es wird häufig zur Darstellung kleiner Ganzzahlen wie Zähler oder IDs verwendet und unterstützt grundlegende arithmetische Operationen und Typkonvertierungen. Da es sich bei Short jedoch um einen vorzeichenbehafteten Typ handelt, müssen Sie bei der Division vorsichtig sein, um einen Über- oder Unterlauf zu vermeiden.

Die IFNULL-Funktion prüft, ob ein Ausdruck NULL ist und gibt in diesem Fall den angegebenen Standardwert zurück, andernfalls gibt sie den Wert des Ausdrucks zurück. Es verhindert, dass Nullwerte Fehler verursachen, ermöglicht die Manipulation von Nullwerten und verbessert die Lesbarkeit von Abfragen. Die Verwendung umfasst: Ersetzen von Nullwerten durch Standardwerte, Ausschließen von Nullwerten aus Berechnungen und verschachtelte Verwendung zur Behandlung mehrerer Nullwertsituationen.

Der char-Typ wird in Java zum Speichern eines einzelnen Unicode-Zeichens verwendet und umfasst 2 Bytes im Bereich von U+0000 bis U+FFFF. Er wird hauptsächlich zum Speichern von Textzeichen verwendet. Er kann durch einfache Anführungszeichen oder Unicode-Escape-Sequenzen initialisiert werden. und kann am Vergleich teilnehmen. Gleichheits-, Ungleichheits- und Verknüpfungsoperationen können implizit in den Typ int oder explizit in Zeichenobjekte konvertiert werden.

In der Sprache C hängt das Verhalten des Divisionsoperators / vom Datentyp der Operanden ab: Ganzzahldivision: Wenn der Operand eine Ganzzahl ist, wird eine Ganzzahldivision durchgeführt und das Ergebnis abgerundet. Gleitkommadivision: Wenn der Operand eine Gleitkommazahl ist, wird eine Gleitkommadivision durchgeführt und das Ergebnis ist eine Gleitkommazahl. Typkonvertierung: Wenn ein Operand eine Ganzzahl ist und der andere nicht, wird die Ganzzahl implizit in eine Gleitkommazahl konvertiert und anschließend eine Gleitkommadivision durchgeführt. Divisor durch 0: Ein mathematischer Fehler tritt auf, wenn der Divisor 0 ist. Modulo-Operation: Verwenden Sie den %-Operator für die Modulo-Operation anstelle der Modulo-Division.

Der Plus-Operator (+) kann in Oracle verwendet werden, um: Zeichenfolgen, Zahlen, Datumsangaben und Zeitintervalle zu verketten; NULL-Werte zu verarbeiten und Datentypen in Nicht-NULL-Werte umzuwandeln;

Das Sternchen (*) in MySQL bedeutet „alle“ und hat verschiedene Verwendungszwecke: Alle Spalten auswählen Alle Zeilen auswählen JOIN-Platzhalter für die LIKE-Klausel der Tabelle Quantifizierer für die REGEXP-Klausel Implizite Typkonvertierung

Lassen Sie uns gängige Anwendungsszenarien der impliziten Typkonvertierung untersuchen! Einführung: In Programmiersprachen ist die implizite Typkonvertierung ein automatisch durchgeführter Datentypkonvertierungsprozess. In einigen Programmiersprachen wird diese Konvertierung implizit durchgeführt, ohne dass der Compiler oder Interpreter explizit angewiesen werden muss, die Konvertierung durchzuführen. Die implizite Typkonvertierung hat eine breite Palette von Anwendungsszenarien in der Programmierung. In diesem Artikel werden einige der häufigsten Anwendungsszenarien erläutert. Implizite Typkonvertierung bei numerischen Berechnungen Bei numerischen Berechnungen sind häufig Operationen zwischen verschiedenen Datentypen erforderlich. Wenn verschiedene Arten von Daten

Die Übereinstimmungsregeln für C++-Funktionsüberladungen lauten wie folgt: Passen Sie die Anzahl und den Typ der Parameter im Aufruf an. Die Reihenfolge der Parameter muss konsistent sein. Die Konstanz- und Referenzmodifikatoren müssen übereinstimmen. Standardparameter können verwendet werden.
