Библиотека knigago >> Науки естественные >> Математика >> Простая математика для простых программистов


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 886, книга: Наказание без преступления
автор: Рэй Дуглас Брэдбери

"Наказание без преступления", шедевр признанного мастера научной фантастики Рэя Брэдбери, приглашает читателей в мир сновидений, где грань между реальностью и иллюзией размывается. В центре истории - Лонеган, человек, которого сажают в тюрьму за преступление, которого он еще не совершил. Над ним ставят эксперимент с использованием телепатических технологий, которые позволяют полиции предвидеть и предотвращать правонарушения. Однако Лонеган невиновен, и его заключение становится...

Рик Гаско - Простая математика для простых программистов

Простая математика для простых программистов
Книга - Простая математика для простых программистов.  Рик Гаско  - прочитать полностью в библиотеке КнигаГо
Название:
Простая математика для простых программистов
Рик Гаско

Жанр:

Математика, Программирование: прочее

Изадано в серии:

Программирование

Издательство:

СОЛОН-Пресс

Год издания:

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Простая математика для простых программистов"

Книга "Простая математика" в первую очередь для программистов, но не только. Для программистов в книге дано самое необходимое, то, без чего программисту будет трудно. Материал представлен в самом простом и правильном для немедленного употребления программистом изложении. Настоящее применение математики программистом начинается тогда, когда он, имея перед собой задачу, сам, без ансамбля, догадывается, какую именно отрасль математики надо для такого случая вспомнить , какой конкретно метод из неё взять и как его запрограммировать. И всё это сам, без посторонней помощи. Цель книги не в том, чтобы научить программировать математические алгоритмы. Цель в том, чтобы взять задачу и понять какой математический алгоритм к ней применить. Прочитайте и применяйте. Для не программиста эта книга короткое введение в основы высшей математики. Особое внимание уделено базовым понятиям теории вероятностей.

Читаем онлайн "Простая математика для простых программистов". [Страница - 4]

Commander. Вне всякой зависимости от применённого спецсредства,
увидим мы вот такое:
00000000:

08

00

00

00

01

00

01

00

| 00

00

02

00

02

00

00

00

00000010:

03

00

06

00

00

00

04

00

| 18

00

00

00

05

00

78

00

00000020:

00

00

06

00

D0

02

00

00

| 07

00

B0

13

00

00

08

00

00000030:

80

9D

00

00

Эта штука традиционно называется дамп, от английского dump, помойка.
Слева для удобства выведены
смещения от начала
файла,
шестнадцатеричные, разумеется. Справа обычно присутствует ещё одно
поле, где коды отображаются в виде соответствующих им символов.
Обычно смысл это имеет только для символьных данных, поэтому я это
поле откусил, чтобы не отвлекало.
Теперь совсем немного математики, точнее, совсем немного простой,
честной арифметики. Как понимать стоящее слева в последней строке
29

смещение 30? Хотя система счисления не указана, число это по основанию
шестнадцать. Понимать его надо в соответствии с приведённой ранее
формулой. 30 = 3*16 + 0*16 = 48. Здесь числа без указания системы
счисления уже десятичные. Если бы вы захотели сохранить в файл больше
значений, то где­то дальше встретили бы смещение 120, например. 120 =
1*16 + 4*16 + 0*16 = 320. Я так подробно объясняю такие тривиальные
вещи потому, что дальше будет хуже. Наши 40 и 120 ­ это нормальные
шестнадцатеричные числа. Впереди нас ждут ненормальные.
:

0

16

16

2

1

0

Почему 120 число нормальное? Потому что слева находятся самые
значимые/весомые цифры. Чем правее, тем меньше их вес, всё как в жизни,
всё как у традиционных десятичных чисел. Но эти смещения, вещь сугубо
вспомогательная, теперь перейдём к основной части.
16

Что мы пишем в файл в самом начале ­ правильно, количество записей,
оно равно восьми. В дампе видим 08 = 0*16 + 8*16 = 8. Всё сходится.
Немного дальше мы видим последовательность байт 04 00 18 00 00 00.
Четвёрка означает, что далее последует факториал от этого числа.
Напоминаю, 4! = 24. Проверяем. 18 = 1* 16 + 8*16 = 24. Опять всё
хорошо. Немного смущает тот факт, что все числа мы пишем как четыре
байта, а нужные значения оказались в самом первом, слева.
1

0

16

1

0

16

Проверим на чём­нибудь сложнее, на факториале восьми, он как раз в
конце файла. 8! = 40320. В файле у нас 80 9D 00 00. Можете сами
трудолюбиво перевести это в десятичное число, если результат не
понравится, повторите через калькулятор Windows (инженерный режим).
Вам всё равно не понравится. Почему? Ведь всё начиналось так хорошо.
Потому что мы имеем здесь непростую встречу суровой физической
правды и грациозной математической условности. В математике, в
арифметике, или кто там вообще отвечает за позиционные системы
счисления, условились, что старшие цифры находятся слева, а младшие ­
справа. В оперативной памяти младшие байты ­ слева, старшие справа.
Разумеется, в нашем контексте слова слева и справа синонимичны
словосочетаниям в начале и в конце. Это потому, что мы пишем слева
направо. У евреев и прочих семитов Ближнего Востока всё наоборот.
Дейкстра вспоминает, что его студент из Сирии всегда начинал перебор
массива с последнего, правого элемента. Как­то я три дня сражался с
настройками своего собственного монитора. Всех настроек было четыре
30

кнопки ­ реальных, не виртуальных. Я потерпел позорное поражение и
был вынужден прочесть руководство. Оказалось, настройку надо всегда
начинать с крайней правой кнопки, а я, понятное дело, сначала давил на
крайнюю левую.
При этом, каждый байт, имеющий, напоминаю, ровно 256 значений,
кодируется двумя цифрами по основанию 16. Эти цифры пишутся, как и
положено, от старшего (левого) разряда до младшего (правого). Какое всё
это имеет практическое значение, или, как нам правильно прочитать дамп?
Общее правило ­ если в дампе имеем последовательность байт, и эти
байты вместе представляют собой четырёхбайтовое целое, конкретно B 1
B2 B 3 B4, то результатом будет
B4*25 6 + B3*256 + B2*256 + B1*256
3

2

1

0

После чего значения каждого байта рассчитываются традиционным
арифметическим способом, как мы их и рассчитывали раньше и
подставляются в формулу. Исходная последовательность 8 0 9D 00 00.
Меняем порядок на 00 00 9D 80. Первые два байта нам неинтересны, далее
имеем:
256 * (9 *16 + D *16 ) + 256 --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.