Przejdź do treści
100% lokalnie

Konwerter IEEE 754

Konwertuj liczbę dziesiętną na jej wzór bitowy IEEE 754 lub bity z powrotem na liczbę.

Wejście
Wynik

Konwerter IEEE 754

Każda liczba zmiennoprzecinkowa przechowywana przez komputer to naprawdę bit znaku, wykładnik i mantysa, spakowane razem zgodnie z IEEE 754 — standardem, który C, Java, Python i JavaScript używają dla swoich typów liczbowych. Wklej liczbę dziesiętną, a to narzędzie koduje ją na dokładny wzór bitowy; wklej wzór bitowy z powrotem, a dekoduje go na liczbę. Zmień kierunek jednym kliknięciem.

Obsługiwane są dwie precyzje: 32-bitowa pojedyncza (1 bit znaku, 8 bitów wykładnika, 23 bity mantysy — C float lub Rust f32) oraz 64-bitowa podwójna (1 + 11 + 52 — C double, i to, czym każda liczba JavaScript jest wewnętrznie). Wzór bitowy można zapisać szesnastkowo lub jako zwykły ciąg zer i jedynek, z porządkiem bajtów ustawionym na big-endian lub little-endian, aby pasował do sposobu, w jaki debuger lub zrzut pamięci wyświetla bajty.

Włącz „Pokaż znak / wykładnik / mantysę”, aby zobaczyć te trzy pola rozdzielone — najszybszy sposób zobaczenia, dlaczego liczba koduje się tak. Włącz „Pokaż faktyczną przechowywaną wartość i błąd zaokrąglenia”, aby zobaczyć, co się dzieje z liczbą po jej przechowaniu: 3,14 nie jest dokładne w żadnej precyzji, a narzędzie pokazuje rzeczywistą przechowaną wartość wraz z różnicą między tym, co wpisałeś a czym opiekuje się sprzęt — powód, dla którego porównania zmiennoprzecinkowe w kodzie zawodzą. Specjalne wartości — 0, -0, Infinity, -Infinity i NaN — wszystkie konwertują się na ich zdefiniowane wzory, jeden na linię, więc cała lista konwertuje się na raz.

Wszystko działa lokalnie w Twojej przeglądarce, używając tego samego DataView, którego siebie JavaScript engine używa do czytania i pisania zmiennoprzecinkowych IEEE 754 — bez biblioteki zmiennoprzecinkowej po stronie serwera i bez opuszczania urządzenia przez dane.

Częste pytania

Co to jest IEEE 754?
Jest to standard określający sposób przechowywania przez komputery liczb niecałkowitych w formacie binarnym: bit znaku, wykładnik i mantysę (ułamek). Pojedyncza precyzja używa łącznie 32 bitów, podwójna precyzja 64 — formaty za float i double w C, f32 i f64 w Ruście i każdą liczbę w JavaScripcie.
Dlaczego 3,14 nie dekoduje się dokładnie z powrotem do 3,14?
Większość ułamków dziesiętnych nie może być reprezentowana dokładnie w formacie binarnym, w taki sam sposób, w jaki 1/3 nie może być zapisana dokładnie w formacie dziesiętnym. Faktycznie przechowywana wartość to najbliższa wartość, jaką format może przechowywać — włącz „Pokaż faktyczną przechowaną wartość”, aby zobaczyć ją i rozmiar luki.
Jaka jest różnica między pojedynczą a podwójną precyzją?
Pojedyncza precyzja (32 bity) ma mniej miejsca na mantysę, więc zaokrągla więcej liczb i utraca więcej cyfr precyzji. Podwójna precyzja (64 bity) jest dokładna dla znacznie więcej wartości — to jest to, czym liczby JavaScript już są wewnętrznie, więc przejście liczby podwójnej przez to narzędzie nigdy nic nie utraci.
Co zmienia porządek bajtów?
Wpływa tylko na sposób, w jaki te same bity są grupowane w bajty do czytania lub pisania — big-endian zapisuje najznaczący bajt pierwszy, little-endian ostatni, zgodnie z tym, jak debuger lub zrzut szesnastkowy wyświetla pamięć na konkretnej architekturze. Sama liczba i rozkład znak/wykładnik/mantysa się nie zmieniają.
Czy moje dane wejściowe są gdzieś przesyłane?
Nie. Konwersja odbywa się całkowicie w Twojej przeglądarce, używając tych samych binarnych interfejsów odczytu/zapisu, na których opiera się siebie JavaScript engine — nic, co tu wpiszesz, nie jest wysyłane na serwer.