chispa1707 (chispa1707) wrote,
chispa1707
chispa1707

Categories:

Счёты и в восьмеричная система счета

(подборка комментариев, о счётах я выделил красным)
***
alpsrife
Я читал про деревенский (также, т.н. Египетский) способ умножения чисел. Смысл прост: надо держать одно число в левой руке, другое в правой. Меньшее (меньшее быстрее разделится, чем большое) делить на 2. Большее умножать на 2. Как на весах. Если меньшее число на 2 нацело не делится, то надо положить то большее число, что держим в другой руке на землю, и продолжить умножать большее на 2, меньшее (уже без остатка, снова чётное) делить на 2. Как только в одной руке получаем единицу, то подбираем числа с земли и складываем.
***
...восьмеричная система счисления является двоичной. В компьютере используются системы счисления 2, 16 (2⁴), 256 (2⁸), 65536 (2¹⁶), и т.д. А восьмеричная не используется, потому что 2³=8, а 3 — число нечётное, и не является степенью двойки, поэтому программисты её игнорируют, как неэффективную для хранения в памяти. Но восьмеричная является полноценной двоичной системой счисления, и к ней применимы все алгоритмы, работающие для двоичной. В двоичной системе счисления самые простые алгоритмы, потому что не используют таблиц (точнее, используют таблицы 2×2). То есть, там не надо целое лето учить таблицу умножения.
.
Если объяснять на чёрной и белой фасоли, то восьмеричная система счисления — это разделение числа на группы по три фасолины. Как мы сейчас делим число по три десятичные цифры, только, фасоль — цифра двоичная.
.
Кроме того, если вспомнить, как выглядят счёты, то там две чёрных костяшки, и восемь белых. То есть, любые счёты применимы как для сложения в десятичной, так и в восьмеричной системе счисления.
.
Поэтому, думаю, надо смотреть на счёты, фасоль и двоичную систему счисления, а не на арабские и индийские цифры: я совсем недавно собирал цифры разных народов, и даже не заметил, что там в половине из них 4 похожа на V.
***
Вот 33 набора из цифр разных народов одной картинкой.
.
Вчера вспоминал деревенский метод умножения. Если иметь под рукой счёты, то там есть ещё одна хитрость (3):
.
1) 4 × b = 2 × 2b (в общем случае: 2a × b = a × 2b)
То есть, если у нас в левой руке чётное число, то мы умножаем правое число на два и счёты не используетм.
.
2) 5 × b = 2×2b + b (в общем случае: (2a+1) × b = a×2b + b)
Если в левой руке нечётное число, то мы на счётах добавляем правое число и продолжаем умножать дальше.
.
3) 5 × b = 3×2b - b (в общем случае: (2c-1) × b = c×2b - b)
Но если у нас на счётах слишком большое число, то можно разложить 5 как 6-1, а не 4+1, тогда мы всегда можем, имея нечётный множитель, на счётах отнимать, а не прибавлять. Правда в левой руке получим снова нечётный множитель, но зато на счётах не будут накапливаться слишком большие числа.

***
Восьмеричная система счисления является двоичной.
.
Если двоичное число записывается как 110100100₂, то
.
4) В системе счисления 4 оно будет записываться группами по две двоичных цифры:
1.10.10.01.00₂, то есть 1 2 2 1 0₄;
.
8) В системе счисления 8 оно будет записываться группами по три двоичных цифры:
110.100.100₂, то есть 6 4 4₈;
.
16) В системе счисления 16 оно будет записываться группами по четыре (уже сложно зрительно) двоичных цифры:
1.1010.0100₂, то есть 1 A 4₁₆;
.
32) В системе счисления 32 (используется в base32: 10 цифр и 22 буквы) оно будет записываться группами по пять двоичных цифр:
01101.00100₂;
.
64) В системе счисления 64 (используется в base64: 10 цифр, 26 маленьких букв и 26 больших букв и ещё 2 знака) оно будет записываться группами по шесть двоичных цифр:
000110.100100₂.
.
То есть любая система счисления с основанием 2²ⁿ (2, 4, 8, 16, 32, 64, 256, 512, 1024, 2048, …) является формой записи двоичного числа. То есть не надо ни умножать (на 10), ни делить (на 10), надо просто разбить число на группы по n двоичных цифр и записать представление каждой из этих получившихся групп.
.
Чтобы перевести число из 8-ричной системы счисления, которую только что без умножения и деления мы сделали только разбив на группы, в систему счисления 10 попробуйте вычислить:
6 × 8² + 4 × 8 + 4.
.
Или попробуйте число в системе счисления 10 (например, 1707) перевести в двоичную (или 8-ричную). Это очень сложно (придётся не умножать, а делить, на 2 или 8).
Но, чтобы перевести двоичное число 11010101011₂ в 8-ричную систему счисления проще простого: разбиваем на группы по три двоичных цифры и смотрим по таблице (какая группа двоичных цифр соответствует одной восьмеричной цифре):
11.010.101.011 (11₂ = 3₈, 010₂ = 2₈, 101₂ = 5₈, 011₂ = 3₈, то есть 3 2 5 3₈).
.
Чтобы проверить надо вычислить (умножать куда проще, чем делить, но делить на 2 проще, чем на что-либо ещё, а делить на 8 — это три раза разделить на 2):
3₈ × 8³ + 2₈ × 8² + 5₈ × 8 + 3₈ = ?
.
Когда-то давно (лет 70 назад) байт (наш байт тогда называли октетом) был 6-битным, то есть системой счисления 64, и там восьмеричная запись нужна была, чтобы представить половинки того байта. Поэтому и использовали исключительно 8-ричную систему счисления. Сейчас байт 8-битный (система счисления 256) и используют исключительно 16-ричную систему счисления, чтобы записывать его половинки.
.
Тогда 1707 записывалось как 3 2.5 3₈, то есть занимало два байта (3₈2₈, 5₈3₈). Их так и читали: тридцать два, пятьдесят три: (3×8+2)×64 + (5×8+3) = 1707₁₀.
.
Но на самом деле это были числа 26₁₀ (3₈×8+2₈) и 43₁₀ (5₈×8+3₈), (а не 32₁₀ и 53₁₀), но в системе счисления 64 это записывается как (26₆₄ 43₆₄ = 26₆₄×64₁₀+43₆₄ = 1707₁₀).
Tags: Счет
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 5 comments