в байт можно 256 значений запихать а в упакованый BCD только 99, странная какая то упаковка, написано было, что это придумали для улучшения быстродействия типа не надо десятичные числа преобразовывать что то типа в двоичные и потом обратно, но что то как то это сомнительно, тут тоже идет преобразование да еще и места надо больше в регистах под этот двоично-десятичный формат? Похоже из за этого так регистры новые чтоли раздули? Чтобы работать с этим BCD?
ты в в BCD можешь только 100 значений упаковать, так как там 8 сегментов * 2 цифры всего, которые их и показывают
В BCD ты можешь деньги хранить, хоть 100 цифр, если у тебя достаточно денег. Никто не заставляет ограничиваться байтом или полубайтом. Длинные числа выводить сложнее (тебе нужно длинное деление), и вот как раз эту проблему BCD отлично решает. И да, «упакованный» != «сжатый».
Да меня вот это смутило просто, в данном контексте это наверное ближе по смыслу к тому что удобно упаковано и перевязано ленточкой :)
Упаковано — это сложено в одну коробочку. Вот как выше SSE обсуждали, там addps (add packed single-precision floats) работает с четырьмя флоатами, сложенными в один регистр, а ещё выше там addss была (add scalar …), она с «неупакованными» работает.
Ага, я вот смотрю о чем народ общается и читаю в инете развиваюсь, теперь вот встал вопрос как флоат представляется в двоичной системе :)
счас гляну спасибо :)
для работы с bcd есть отдельные группы команд процессора, это нужно чтоб в эпоху 16 битных процов можно было считать овер большие числа.
Ещё уходят проблемы с точностью из-за перевода из десятичных в двоичные и обратно.
а что там за проблемы?
select 10.0/3.0*3.0 from dual; 9.99999999999999999999999999999999999999
мы о конвертации говорим или о вычислениях, я просто не понял, как формат данных решит проблему точности вычислений fpu
Речь изначально шла о двоично-десятичном формате хранения чисел. Для его поддержки в интеловских процессорах даже предусмотрены специальные команды. Это все не просто так, а для финансовых вычислений без артефактов приведённого выше вида.
Справедливости ради, финансовые операции в bcd в серьезных местах не делаются
Речь о 80-х годах.
да, я просто не понимаю чего то видимо, не понятно как это помогает
Вычисления ведутся по "школьным" формулам, сразу в десятичной системе.
т.е как например у нас есть число 5 - 0101 и число 8 1000 как отнимать от 8-5 скажем? в столбик что ли или что?
Именно так. https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D0%BE-%D0%B4%D0%B5%D1%81%D1%8F%D1%82%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%B4
емнип, изначально речь была о конвертации строк с десятичными дробями в массив флотов
для финансовых операций, наверняка, целые числа используют
bcd вроде только с целыми работает. но можно и ивратиться и ставить точку на 2-3 разряда левее.
Обсуждают сегодня