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

  • Утро

    Встал позже нее минут на 15 Мусор весь по пакетам, посуда вся вымыта. Как же это выглядит на контрасте с бестолковыми девушками с предыдущих…

  • Питер

    Первый раз в этом году. Выезжаем 6 августа утром, обратно 8-го. Вчера не удержался и хорошо так шлепнул по ее КМСной жопе прям посреди улицы. Не в…

  • Продукт овнер

    Женщины это все же загадка. Ждал, что в этом спринте мне предьявят ультиматум, или работай, или пиздуй, но "Саша молодец, старается"... Обьективно…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your IP address will be recorded 

  • 5 comments