Arithmetische Rechtsverschiebung für Ganzzahlen
Bei 8 Bit ergibt −42 um 3 Stellen nach rechts verschoben −6: Aus 11010110 wird 11111010, weil das Vorzeichenbit in die frei gewordenen Stellen kopiert wird. Wählen Sie eine Breite von 2 bis 1024 Bit, um Prozessorbefehle, Binärformate oder Compilerübungen zu prüfen. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Wert
- -42
- Breite
- 8
- Verschiebung
- 3
- Ergebnis
- -6
- Binäre Eingabe
- 11010110
- Ergebnis binär
- 11111010
- Vorzeichenbit
- 1
Dieser Rechner für arithmetische Rechtsverschiebungen verschiebt alle Bits einer vorzeichenbehafteten Ganzzahl nach rechts und kopiert das höchstwertige Bit in die links frei werdenden Stellen. Wählen Sie die Bitbreite, geben Sie eine vorzeichenbehaftete Dezimal-, Hexadezimal- oder Binärzahl ein und bestimmen Sie die Anzahl der Stellen. Sie erhalten exakte Dezimalwerte und auf die gewählte Breite aufgefüllte Bitmuster, unabhängig von der impliziten Ganzzahlgröße einer Programmiersprache.
Warum das Vorzeichenbit kopiert wird
Eine logische Rechtsverschiebung füllt links immer Nullen auf. Die arithmetische Variante wiederholt stattdessen das ursprüngliche Vorzeichenbit: eine Null bei nichtnegativen Werten, eine Eins bei negativen. Diese Wiederholung heißt Vorzeichenerweiterung und sorgt dafür, dass das Vorzeichen erhalten bleibt, während die Bits nach rechts wandern. Bei nichtnegativen Eingaben liefern beide Verfahren daher dasselbe Muster, bei negativen unterscheiden sie sich sofort. Im Beispiel wird −42 bei 8 Bit als 11010110 dargestellt; um 3 Stellen verschoben entsteht 11111010, also −6. Das Ergebnis enthält immer den Dezimalwert und das auf volle Breite aufgefüllte Muster.
Breite, Wertebereich und Rundung richtig deuten
Eine arithmetische Verschiebung hat nur bei bekannter Breite eine genaue Bedeutung, denn dieselben unteren Bits können je nach Breite einen positiven oder einen negativen Wert beschreiben. Erlaubt sind 2 bis 1024 Bit, und der Wert muss in den vorzeichenbehafteten Bereich dieser Breite passen, sonst wird er abgelehnt statt still abgeschnitten. Zahlenmäßig entspricht eine Verschiebung um n Stellen einer Division durch zwei hoch n mit Abrundung Richtung minus unendlich: −5 einmal verschoben ergibt −3, nicht −2. Neben dezimalen Eingaben sind Werte mit 0x- oder 0b-Präfix möglich, und eine Verschiebung um null lässt alles unverändert.
Legen Sie zuerst die vorzeichenbehaftete Breite fest
Eine arithmetische Rechtsverschiebung ist nur bei bekannter Bitbreite eindeutig. Dasselbe Bitmuster kann bei einer Breite positiv und bei einer anderen negativ sein, weil im Zweierkomplement das höchstwertige Bit das Vorzeichen trägt. Wählen Sie 2 bis 1024 Bits und geben Sie einen Wert aus dem passenden Wertebereich ein.
Der Rechner weist Überschreitungen zurück, statt Bits unbemerkt abzuschneiden. Für negative Zahlen eignet sich die Dezimalschreibweise; mit 0x oder 0b können Sie Register und Binärfelder direkt vergleichen. Das Eingabemuster wird bis zur gewählten Breite aufgefüllt, sodass Sie jedes Vorzeichen- und Datenbit sehen.
Verstehen Sie die Vorzeichenerweiterung
Eine logische Rechtsverschiebung fügt links stets Nullen ein. Die arithmetische Variante wiederholt dagegen das Vorzeichenbit: null bei nicht negativen und eins bei negativen Werten. Bei negativen Zahlen entspricht dies einer Division durch eine Zweierpotenz mit Abrundung gegen minus unendlich: Aus minus fünf wird bei einer Stelle minus drei.
Verarbeiten Sie große Verschiebungen exakt
Bei null Stellen bleibt der Wert unverändert. Erreicht oder überschreitet die Anzahl die Bitbreite, bleibt nur die Vorzeichenerweiterung: null für einen nicht negativen Wert und minus eins für einen negativen Wert. Dieses Verhalten vermeidet die Zählermaskierung mancher Prozessoren.
Alle Berechnungen verwenden Ganzzahlen mit beliebiger Genauigkeit. Verarbeiten Sie diese Zeichenfolgen deshalb mit einem exakten Ganzzahltyp.
Anwendungsfälle
Vorzeichenbefehle prüfen
Vergleichen Sie Emulator, Compiler oder Prozessor mit einer Operation festgelegter Breite.
Binärformate untersuchen
Prüfen Sie ein vorzeichenbehaftetes Feld bei Operationen mit Vorzeichenerhaltung.
Zweierkomplement erklären
Zeigen Sie aufgefüllte Bitmuster neben ihren exakten Dezimalinterpretationen.
Häufige Fragen
Was bewirkt eine arithmetische Rechtsverschiebung?
Sie verschiebt Bits nach rechts und füllt die hohen Stellen mit dem ursprünglichen Vorzeichenbit.
Wie unterscheidet sie sich von einer logischen Verschiebung?
Die logische Variante fügt Nullen ein; die arithmetische erhält durch das Vorzeichenbit negative Werte.
Welche Eingabeformate werden akzeptiert?
Nutzen Sie vorzeichenbehafteten Dezimaltext oder 0x für Hexadezimal- und 0b für Binärzahlen.
Was geschieht ab einer Verschiebung um die gesamte Breite?
Das Ergebnis ist null für nicht negative und minus eins für negative Werte.
Warum ergibt −5 einmal verschoben −3 und nicht −2?
Weil die arithmetische Rechtsverschiebung wie eine Division durch eine Zweierpotenz wirkt, die in Richtung minus unendlich rundet, nicht in Richtung null. Die Hälfte von −5 liegt zwischen −3 und −2, abgerundet ergibt das −3.
Warum spielt die Bitbreite eine Rolle?
Das höchste Bit ist das Vorzeichenbit, daher kann dasselbe Muster bei einer Breite positiv und bei einer anderen negativ sein. Wählen Sie 2 bis 1024 Bit; Werte außerhalb des Bereichs werden abgelehnt statt still gekürzt.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/arithmetic-shift-right \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"-42","width":8,"shift":3}'const res = await fetch("https://api.kit.forhosting.com/dev/arithmetic-shift-right", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "-42",
"width": 8,
"shift": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/arithmetic-shift-right",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "-42",
"width": 8,
"shift": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/arithmetic-shift-right", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"-42","width":8,"shift":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"-42","width":8,"shift":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/arithmetic-shift-right", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"value": "-42",
"width": 8,
"shift": 3
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.arithmetic_shift_right",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Verstehen Sie die Vorzeichenerweiterung
Die Ausgabe enthält das dezimale Ergebnis, das vollständige Binärmuster und `sign_bit` zur eindeutigen Angabe des wiederholten ursprünglichen Bits.
Verarbeiten Sie große Verschiebungen exakt
Dezimalwerte werden als Zeichenfolgen ausgegeben, da JSON nicht jede 64-, 128- oder 1024-Bit-Zahl exakt darstellen kann.
Technische Fragen
Warum werden Dezimalwerte als Zeichenfolgen ausgegeben?
So bleiben große Ganzzahlen außerhalb des sicheren JSON-Zahlenbereichs exakt.
Was kostet ein API-Aufruf?
Jeder API-Aufruf kostet $0.002. Die Browserfassung nutzt dieselbe deterministische Berechnung.