Ответы пользователя по тегу Системы счисления
  • Почему компьютеры не используют двоично-десятичный формат для вычислений?

    hint000
    @hint000
    у админа три руки
    Идея двоично-десятичного представления не нова. Как минимум, 60 лет назад (а вероятно, что и ещё раньше) она имела практическую реализацию, как в аппаратной части (например, на IBM System/360), так и на языке высокого уровня (Cobol, 65 лет назад). https://ru.wikipedia.org/wiki/Двоично-десятичный_код
    Поскольку Cobol до сих пор немножко жив (в США есть спрос на опытных программистов на Cobol, в основном в финансовом секторе), то при желании можете его использовать вместе с его реализацией двоично-десятичной арифметики.
    Но скорость вычислений может быть меньше на порядок по сравнению с двоичным кодированием.

    ради точных вычислений
    арифметика с плавающей точкой в принципе не может быть точной. Например, в вашей любимой десятичной системе вы не сможете точно записать 1/3, 1/6, 1/7, 1/9, 1/11, 1/12, 1/13, 1/14, 1/15,.. (вам для этого потребуется бесконечно много разрядов, так же как в двоичной системе для ваших примеров 2,1;3,4;45,9). Проблему можно решить арифметикой с рациональными числами, но это будет ещё на порядок медленнее даже по сравнению с двоично-десятичной арифметикой. Реализации (библиотеки) тоже существуют - можете их найти и использовать, если готовы ради точности потерять в скорости в 100, а то и в 1000 раз (иногда точность на самом деле настолько важна, спору нет, но таких задач мало). Кстати, сравните возможности арифметики рациональных чисел с возможностями длинной арифметики. :) Тут не всё так однозначно.
    https://ru.wikipedia.org/wiki/Длинная_арифметика

    В целом вопрос хороший в плане вашей любознательности.
    Ответ написан
  • Как перевести нецелое число из десятичной в шестнадцатиричную систему?

    hint000
    @hint000
    у админа три руки
    0.54625 домножить на 16^4, перевести из десятичной в шестнадцатиричную и сдвинуть запятую на 4 разряда. Т.е. на сколько домножили, на столько же разделили сдвигом запятой.
    Ответ написан
    Комментировать