Это число в 16ной записи представляющее десятное дробное?
Пример 0х1p-1 (пример из языка Lua)
По какому принципу они строятся и существуют ли в других языках?
Другие языки программирования и технологии
Что такое дробные HEX числа?
Это не просто дробное шестнадцатиричное число, это ЭКСПОНЕНЦИАЛЬНАЯ шестнадцатиричная запись числа с плавающей точкой. Аналогична обычной экспоненциальной записи плавающих чисел вида, скажем 1.42e-1, что означает выражение 1,42 * 10 ^ -1, только для p основание будет равно (внезапно) 2, вместо е, принимаемого за 10, т. е.
0x1p-1 = 1 * 2 ^ -1.
При этом, степень после p также внезапно имеет десятичную запись, а не шестнадцатиричную
Появилась она как минимум, в стандарте языка C99, при этом в с++ попала только в версии с++17, до этого в с++ существовала как нестандартное расширение некоторых компиляторов. Применяется, например, еще в haskel, java, может и каких-то других подобных языках
Есть и другие варианты записи, например в Хаскеле в неэкспоненциальной форме шестнадцатиричные дроби могут быть записаны в виде 0x1.1
0x1p-1 = 1 * 2 ^ -1.
При этом, степень после p также внезапно имеет десятичную запись, а не шестнадцатиричную
Появилась она как минимум, в стандарте языка C99, при этом в с++ попала только в версии с++17, до этого в с++ существовала как нестандартное расширение некоторых компиляторов. Применяется, например, еще в haskel, java, может и каких-то других подобных языках
Есть и другие варианты записи, например в Хаскеле в неэкспоненциальной форме шестнадцатиричные дроби могут быть записаны в виде 0x1.1
Дробные 16-ричный числа ничем не отличаются от дробных десятичных - за исключением основания системы счисления. Буква 'p' используется вместо буквы 'e' потому, что 'e' используется для обозначения одной из цифр в 16-ричной системе счисления.
Запись 0х1p-1 означает 1 * 16 ** -1 - т.е. 1.0 / 16.0
Аналогично, запись 1e-1 означает 1 * 10 ** -1 - т.е. 1.0 / 10.0
Запись 0х1p-1 означает 1 * 16 ** -1 - т.е. 1.0 / 16.0
Аналогично, запись 1e-1 означает 1 * 10 ** -1 - т.е. 1.0 / 10.0
Орлов Владимир
Нет, не угадали. В Lua, также как и в С99 показатель экспоненты равен 2, а не 16
Шестнадцатеричная система счисления (HEX) – это позиционная система счисления по целочисленному основанию 16. В качестве шестнадцатеричных чисел используются цифры от 0 до 9 и латинские буквы от A до F. Значения чисел от 0 до 9 обычны, как и в десятичной системе, далее, от 10 до 16 используются буквы A-F, т.е. буква F = 16, далее 11 = 17, 12 = 18 и т.д и т.п.
Буквы A, B, C, D, E, F имеют значения 10₁₀, 11₁₀, 12₁₀, 13₁₀, 14₁₀, 15₁₀ соответственно.
Буквы A, B, C, D, E, F имеют значения 10₁₀, 11₁₀, 12₁₀, 13₁₀, 14₁₀, 15₁₀ соответственно.
Похожие вопросы
- Дробная часть числа (Задачу нужно решить в С/С++)
- Как перевести дробное десятичное число в двоичное. С плавающей запятой.
- Как перевести дробное десятичное число в двоичную систему? по шагам пожалуйста 194,5?
- dec hex oct bin что значит
- Распишите пожалуйста как перевtcnb "10001101" из BINa в HEX. Только БЕЗ помощи калькулятора
- Нужна помощь в делфи. Dec to hex
- Объясните пожалуйста, что такое HEX редактор и для чего он нужен?
- Почему при делении дробных чисел пишет результат 0 на С++? x1=(b+pow(d,0.5))/2/a;
- Вес может ли быть дробным числом? Какой тип данных использовать для этого int или float или double ?
- Генератор Случайных Чисел