Перейти до вмісту
100% локально

IEEE 754 конвертер

Перетворіть десяткове число на його бітовий паттерн IEEE 754 або біти назад на число.

Введення

IEEE 754 конвертер

Кожне число з рухомою комою, яке зберігає комп'ютер, насправді являє собою бітом знака, показником степеня та мантисою, упакованими відповідно до IEEE 754 — стандарту, який використовують C, Java, Python та JavaScript для своїх числових типів. Вставте десяткове число, і цей інструмент кодує його на точний бітовий паттерн; вставте бітовий паттерн назад, і він декодує його на число. Змініть напрямок одним кліком.

Підтримуються дві точності: 32-бітна одинарна (1 біт знака, 8 бітів показника, 23 біти мантиси — float у C або f32 у Rust) та 64-бітна подвійна (1 + 11 + 52 — double у C та те, чим усередину є кожне число JavaScript). Бітовий паттерн може бути записаний як шістнадцятковий або як простий рядок нулів та одиниць, з порядком байтів, встановленим на big-endian або little-endian, щоб відповідати тому, як налагоджувач або дамп пам'яті відображає байти.

Увімкніть «Показати знак / показник степеня / мантису», щоб побачити три поля розділеними — найшвидший способ зрозуміти, чому число кодується таким чином. Увімкніть «Показати фактичне збережене значення та помилку округлення», щоб побачити, що відбувається з числом після збереження: 3,14 не точне в жодній точності, та інструмент показує фактично збережене значення разом з різницею між тим, що ви ввели, та що утримує обладнання — причина, чому порівняння чисел з рухомою комою в коді дають збій. Спеціальні значення — 0, -0, Infinity, -Infinity та NaN — всі перетворюються на їхні визначені паттерни, по одному на рядок, тому весь список перетворюється відразу.

Все працює локально у вашому браузері, використовуючи той самий DataView, який сам JavaScript engine використовує для читання та запису IEEE 754 чисел з рухомою комою — немає серверної бібліотеки з рухомою комою та дані не покидають ваш пристрій.

FAQ

Що таке IEEE 754?
Це стандарт, який визначає, як комп'ютери зберігають нецілі числа у двійковому форматі: біт знака, показник степеня та мантису (дріб). Одинарна точність використовує всього 32 біти, подвійна точність — 64 — формати, що стоять за float та double у C, f32 та f64 у Rust та кожним числом у JavaScript.
Чому 3,14 не декодується точно назад у 3,14?
Більшість десяткових дробів не можуть бути представлені точно у двійковому форматі, точно так само, як 1/3 не може бути написана точно у десятковому форматі. Фактично збережене значення — це найближче значення, яке може утримувати формат — увімкніть «Показати фактичне збережене значення», щоб його побачити та розмір різниці.
Яка різниця між одинарною та подвійною точністю?
Одинарна точність (32 біти) має менше місця для мантиси, тому округлює більше чисел та втрачає більше цифр точності. Подвійна точність (64 біти) точна для набагато більше значень — це те, чим числа JavaScript уже є усередину, тому прохід подвійного числа через цей інструмент ніколи нічого не втратить.
Що змінює порядок байтів?
Це впливає лише на те, як одні й ті ж біти групуються в байти для читання чи запису — big-endian записує найзначимніший байт першим, little-endian останнім, відповідаючи тому, як налагоджувач або шістнадцятковий дамп відображає пам'ять на конкретній архітектурі. Саме число та розбиття знака/показника/мантиси не змінюються.
Завантажуються мої дані кудись?
Ні. Конвертація працює повністю у вашому браузері, використовуючи ті самі API двійкового читання/запису, на які спирається сам JavaScript engine — нічого з того, що ви вводите тут, не надсилається на сервер.