BrotherFlame (brotherflame) wrote,
BrotherFlame
brotherflame

Машинная арифметика

Не программерам не читать. Реально не интересно.

Итак, вопрос. Я думаю, что к Жене, потому что из остальных знакомых 6 прогаммеров на него не ответил никто даже с википедией. Т.е. никто не понимает машинную арифметику. И мне стало интересно, потому что я видимо тоже не понимаю.

Есть Double. 64битный. Это в яве. В С++ это называется long double вроде.
И работают они с ним одинаково, согласно IEEE754.

Как в Double представляется число 2 (по битам)?

Алгоритм перевода: http://www.sgu.ru/prcnit/teach/3.php
В принципе, везде одинаково пишут.
В скобочках указываю систему счисления (2) -- двоичная, (10) --
десятичная. ^ -- степень. 10^2 -- 10 во второй.
Че делаем по нему:
1) 2 = 2.0 (10)
2) 2.0 == 10.000...0 (2)
3) Нормализуем: 10.00000...0 = 1.000000...000*10^1
4) Берем смещение экспоненты, оно равно: 1023 для 64битного дабла.
Порядок у нас = 1. Значит смещеннный порядок: 1023+1 = 1024 (10).
1024(10) = 1000000000 (2) 11 знаков, ед. и 10 нулей.
первый разряд это знак. у нас там должен быть 0.
11 следующих -- экспонента == 10000000000 (2)
И остальные 52 -- мантисса. Т.к. мантисса всегда начинается с 1, машина это уже знает и отбрасывает ее, т.е. должно получится в итоге:
01000....000
Однако
Double x = 2;
System.out.println("x(2) == " + Double.toLongBits(x));
выдает:
10000....000.
Почему?
Subscribe

  • Поторговался

    Пишу hr-ру конторы, от которой оффер принял. Мол так и так, мне на +20 еще ща прилетел, можете ли поднять еще на 10? Тот проект не такой интересный.…

  • Движ продолжается

    Долетают фидбэки от моей доотпускной активности. Это напоминает общение с девушками в молодости. Подкатил, подкатил, подкатил. Сначала ничего,…

  • Отсчёт пошел

    Поговорили с начальником. Вилка и так по верху, должность выше мне не светит, поэтому ухожу и с 14-го на новом месте. Следующие три месяца придется…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 5 comments