Position des höchsten gesetzten Bits
Dieser Rechner ermittelt den nullbasierten Index der am weitesten links stehenden 1 einer positiven Ganzzahl.
Im Browser ausführen – kostenlos
Dieser Index entspricht genau dem abgerundeten Zweierlogarithmus und kennzeichnet den Zweierpotenzbereich des Werts. Geben Sie die Ganzzahl als Dezimaltext ein, damit auch jenseits des sicheren Zahlenbereichs gängiger Programmiersprachen die volle Genauigkeit erhalten bleibt. Das Ergebnis enthält die Position, die Bitlänge und die größte Zweierpotenz, die den Eingabewert nicht überschreitet.
Die nullbasierte Bitposition verstehen
Binärpositionen werden von rechts gezählt und beginnen bei null. Das niedrigstwertige Bit steht für zwei hoch null, das nächste für zwei hoch eins und so weiter. Das höchste gesetzte Bit ist somit die am weitesten links stehende 1. Bei 13 lautet die Binärdarstellung 1101, daher liegt diese 1 an Position 3. Der Rechner liefert Position 3, eine Bitlänge von 4 und die höchste passende Zweierpotenz 8. Durch diese Konvention entspricht das Ergebnis für jede positive Ganzzahl floor(log2(Wert)). Bei einer exakten Zweierpotenz ist die Position ihr Exponent: 1024 ist zwei hoch 10. Null wird abgelehnt, weil sie kein gesetztes Bit besitzt und ihr Zweierlogarithmus nicht endlich ist. Negative Ganzzahlen werden ebenfalls ausgeschlossen, da ihr höchstes Bit von der gewählten vorzeichenbehafteten Darstellung und Wortbreite abhängt.
Große Ganzzahlen ohne Genauigkeitsverlust verarbeiten
Die Eingabe erfolgt als Dezimaltext und nicht als Gleitkommazahl. Viele Laufzeitumgebungen können oberhalb von 9,007,199,254,740,991 nicht mehr jede Ganzzahl darstellen. Eine vorherige Rundung kann eine Zweierpotenzgrenze überschreiten und die Position verfälschen. Der Rechner liest die Ziffern als beliebig große Ganzzahl und verschiebt den Wert nach rechts, bis keine Bits übrig sind. Die Anzahl der Verschiebungen minus eins ergibt die Position. Es wird keine Logarithmusnäherung verwendet; dadurch bleibt das Ergebnis unmittelbar unter, auf und über jeder Zweierpotenz exakt. Führende Nullen sind zulässig, weil sie den Wert nicht ändern. Vorzeichen, Dezimalstellen, Exponenten, Trennzeichen sowie hexadezimale oder binäre Präfixe sind ausgeschlossen. Die Grenze von 10,000 Dezimalziffern hält die Laufzeit beschränkt und unterstützt dennoch Werte weit jenseits üblicher Maschinenwortbreiten.
Das Ergebnis für Größenwahl und Normierung nutzen
Die Position des höchsten Bits klassifiziert eine Größenordnung kompakt. Wenn Sie eins addieren, erhalten Sie die kleinste Anzahl vorzeichenloser Bits, die den Wert speichern kann. Die ausgegebene Zweierpotenz bildet die Untergrenze des aktuellen Binärbereichs; durch Verdoppeln entsteht die nächste Zweierpotenz. Das hilft bei der Auswahl von Pufferklassen, Tabellengrößen, Baumebenen, Festkommaskalen oder Iterationszahlen binärer Algorithmen. Werte von 256 bis 511 liegen beispielsweise alle an Position 8 und benötigen 9 vorzeichenlose Bits. Die Berechnung ersetzt auch einen Zweierlogarithmus, wenn nur ein ganzzahliger Exponent gebraucht wird. Konkrete Speicherformate können zusätzliche Anforderungen haben: Vorzeichen benötigt meist ein weiteres Bit, Serialisierungen können Kopfdaten enthalten und Speicherzuweisungen eine Ausrichtung verlangen. Verwenden Sie die ausgegebene Bitlänge als exakte Breite des Betrags und wenden Sie anschließend die Regeln Ihres Formats an.
Anwendungsfälle
Vorzeichenlose Ganzzahlbreite wählen
Bestimmen Sie mit der Bitlänge die minimale Anzahl von Betragsbits für einen positiven Wert.
Eine Zweierpotenzklasse auswählen
Gruppieren Sie Werte nach dem höchsten Bit für Puffer, Baumebenen oder Zuweisungsklassen.
Ganzzahldaten normieren
Nutzen Sie die Position als exakten Exponenten vor Festkommarechnung, Kodierung oder Bereichsvergleich.
Häufige Fragen
Beginnt die Position bei null?
Ja. Der Wert 1 liegt an Position 0, 2 an Position 1 und 8 an Position 3.
Warum wird null abgelehnt?
Null besitzt kein gesetztes Bit; daher gibt es kein höchstes Bit und floor(log2(0)) ist nicht endlich.
Sind Ganzzahlen oberhalb der sicheren JavaScript-Grenze möglich?
Ja. Dezimaltext wird mit beliebig großer Ganzzahlarithmetik bis zur veröffentlichten Grenze von 10,000 Ziffern verarbeitet.
Werden negative Ganzzahlen unterstützt?
Nein. Deren höchstes Bit hängt von der vorzeichenbehafteten Kodierung und festen Wortbreite ab.
Was kostet eine API-Anfrage?
Jede API-Anfrage kostet $0.002. Im Browser steht der Rechner außerdem kostenlos bereit.
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/highest-set-bit \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"12345678901234567890"}'const res = await fetch("https://api.kit.forhosting.com/dev/highest-set-bit", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "12345678901234567890"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/highest-set-bit",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "12345678901234567890"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/highest-set-bit", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"12345678901234567890"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"12345678901234567890"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/highest-set-bit", 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": "12345678901234567890"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.highest_set_bit",
"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.
Limits
max_value_chars | 10000 |
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. |