Top.Mail.Ru
? ?

Предыдущий пост Поделиться Пожаловаться Следующий пост
Счёты и в восьмеричная система счета
Веселый
chispa1707
(подборка комментариев, о счётах я выделил красным)
***
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₁₀).
Метки:



  • 1
Умножение в двоичной системе выгоднее, чем в 8-ричной. Что нужно, чтобы умножать в 8-ричной системе? Гигантская таблица 8×8 (по три фасолины), в каждой из которой будет шесть фасолин: 384 фасолины (таблица И цзин). Она займёт весь стол, либо её придётся клеить и вешать на стену. Потом нужно будет весь стол засыпать фасолью и умножать в столбик, постоянно глядя на таблицу (большую). Либо исписывать по листку на каждую пару умножаемых чисел. И постоянно ошибаться с переносами и сдвигами.

Что нужно, чтобы умножить два восьмеричных числа в двоичной системе счисления?
1) Выкладываем фасолью (по три группы) оба числа.
2) Сдвигаем их поплотнее (преобразование из восьмеричной в двоичную).
3) Смотрим в каком из них меньше чёрных фасолин (k). То будет сверху (a).
4) Готовим k копий числа b. Просто берём и, не думая, выкладываем ту же самую последовательность b, что уже на столе выложена.
5) Но выкладываем их справа налево, начиная от каждой чёрной фасолины самого верхнего числа.
6) Считаем количество чёрных фасолин в каждом столбце. Можно просто чёрные вниз сдвинуть (если не боимся ошибиться потом), а белые убрать. Можно снизу подкладывать. Там их не может быть больше, чем чёрных фасолин в верхнем числе (k). Здесь считаем в СС с основанием 1 (римская).
7) Для каждой группы осуществляем очень простую операцию. Если в группе есть больше двух фасолин, то их убираем, а слева подкладываем одну. Всё.
8) Превращаем СС с основанием 1 (римская) в двоичную: если одна фасолина, то кладём чёрную, если нет ничего, то белую.
9) Выкладываем результат справа налево по три фасолины. Так, чтобы преобразовать из двоичной в восьмеричную и записать на листке.



Этот процесс можно делать совершенно не думая, не смотря ни на какие таблицы, совершенно безошибочно. Не нужны счёты. Не нужно ничего складывать. Не нужно ничего держать в уме. Просто выкладывать сдвигать и выравнивать палочками. Можно даже не объяснять, что это цифры, что это умножение, просто пару раз показать и просить на листочке записывать результаты (или на ветке засечки выцарапать).

Здесь я при помощи мышки и copy&paste умножил 123 на 456 и получил 56088. Совершенно необязательно его где-нибудь записывать цифрами, вырубать засечками. Можно взять две палочки и куда-нибудь его сместить для памяти. Можно прямо снизу его на что-нибудь ещё умножить.

Грубо говоря, если дать счётчику такую табличку, то он сможет записывать и арабские восьмеричные цифры, и латинские, и римские, и даже китайские (И цзин). Можно русские добавить А, В, Г, Д, Е, Ж, З, И. Какие угодно: хоть 8 цветных камней.

Ни в коем случае не надо воспринимать четвёртый столбец (римские цифры) всерьёз! Я расставил их с потолка. Над ними надо думать. Связь с китайскими (третий столбец) очевидна. Второй столбец довольно-таки бесполезен (A-H), потому что 8-ричные и 10-ричные цифры равнозначны и равны друг другу (кроме 8 и 9, разумеется). Однако, 3253₈ можно перепутать с 1707₁₀. А, вот, DCFD₈ с 1707₁₀ перепутать невозможно.



Китайцы (Книга Перемен) вообще использовали двоичную систему без стеснения и без перевода в цифры (есть триграммы — 8-ричная система счисления, и гексаграммы — 64-ричная система счисления).

Сложилось в голове. Здесь снизу (между второй и третьей чертой снизу) мы видим смешанную двоично-римскую систему счисления. Её основание 2, но цифры могут быть не только 0 и 1, но и 2, 3 и больше фасолин. Цвет не важен. Её можно назвать безцветной. То есть, римская — безцветная, а двоичная — чёрно-белая. Но выкладывается всё на одном столе из тех же самых фасолин.

Одно это число можно записать множеством способов. Принципа два:
1. Камушек слева равен двум камушкам справа.
2. Два камушка справа равны одному камешку слева.

Если каждому разряду назначить букву (X, V, I), то действуют следующие соотношения:
1. X = VV
2. V = II
3. XV = VVV = IIIIII

Если это верно, то значит:
[Это просто двоичная система счисления с неограниченной цифрой.]
1: I
2: II = V
3: III = IV = VI
4: VII = X
5: VIII = IX = XI
6: XII = XV
7: XIII = XIV = XVI
8: XVII = XX = L
9: XVIII = XIX = XXI = LI
10: XXII = XXV = LII = LV
11: XXIII = XXIV = XXVI = LIII = LIV = LVI
12: XXVII = XXX = XL = LVII = LX
13: XXVIII = XXIX = XXXI = XLI = LVIII = LIX = LXI
14: XXXII = XXXV = XLII = XLV = LXII = LXV
15: XXXIII = XXXIV = XXXVI = XLIII = XLIV = XLVI = LXIII = LXIV = \
LXVI
16: XXXVII = XLVII = LXVII = LXX = C
17: XXXVIII = XXXIX = XLVIII = XLIX = LXVIII = LXIX = LXXI = CI
18: LXXII = LXXV = CII = CV
19: LXXIII = LXXIV = LXXVI = CIII = CIV = CVI
20: LXXVII = LXXX = XC = CVII = CX
21: LXXVIII = LXXIX = LXXXI = XCI = CVIII = CIX = CXI
22: LXXXII = LXXXV = XCII = XCV = CXII = CXV
23: LXXXIII = LXXXIV = LXXXVI = XCIII = XCIV = XCVI = CXIII = CXIV = \
CXVI
24: LXXXVII = XCVII = CXVII = CXX = CL
25: LXXXVIII = LXXXIX = XCVIII = XCIX = CXVIII = CXIX = CXXI = CLI
26: CXXII = CXXV = CLII = CLV
27: CXXIII = CXXIV = CXXVI = CLIII = CLIV = CLVI
28: CXXVII = CXXX = CXL = CLVII = CLX
29: CXXVIII = CXXIX = CXXXI = CXLI = CLVIII = CLIX = CLXI
30: CXXXII = CXXXV = CXLII = CXLV = CLXII = CLXV
31: CXXXIII = CXXXIV = CXXXVI = CXLIII = CXLIV = CXLVI = CLXIII = \
CLXIV = CLXVI
32: CXXXVII = CXLVII = CLXVII = CLXX = CC = D


Если один камешек слева будет равен трём камушкам справа, то:

[Мы получаем троичную систему счисления с неограниченной цифрой.]
1: I
2: II
3: III = V
4: IV = VI
5: VII
6: VIII
9: X
10: IX = XI
11: XII
12: XIII = XV
13: XIV = XVI
14: XVII
15: XVIII
18: XX
19: XIX = XXI
20: XXII
21: XXIII = XXV
22: XXIV = XXVI
23: XXVII
24: XXVIII
27: XXX = L
28: XXIX = XXXI = LI
29: XXXII = LII
30: XXXIII = XXXV = LIII = LV
31: XXXIV = XXXVI = LIV = LVI
32: XXXVII = LVII
33: XXXVIII = LVIII
36: XL = LX
37: XXXIX = XLI = LIX = LXI
38: XLII = LXII
39: XLIII = XLV = LXIII = LXV
40: XLIV = XLVI = LXIV = LXVI
41: XLVII = LXVII
42: XLVIII = LXVIII
45: LXX
46: XLIX = LXIX = LXXI
47: LXXII
48: LXXIII = LXXV
49: LXXIV = LXXVI
50: LXXVII
51: LXXVIII
54: LXXX
55: LXXIX = LXXXI
56: LXXXII
57: LXXXIII = LXXXV
58: LXXXIV = LXXXVI
59: LXXXVII
60: LXXXVIII
64: LXXXIX
81: C
82: CI
83: CII
84: CIII = CV
85: CIV = CVI
86: CVII
87: CVIII
90: XC = CX
91: XCI = CIX = CXI
92: XCII = CXII
93: XCIII = XCV = CXIII = CXV
94: XCIV = XCVI = CXIV = CXVI
95: XCVII = CXVII
96: XCVIII = CXVIII
99: CXX
100: XCIX = CXIX = CXXI


Для счётчика, который перекладывает камушки совершенно нет разницы два камушка перекладывать вправо, или три. Он может с лёгкостью записать число хоть в двоичной, хоть в троичной СС.

Если хочет, то может перекладывать по пять камушков (и использовать те же самые буквы, что выучил). Но там проблема: придётся, иногда записывать VVVV (X=VVVVV) или IIII. А мы такого не видим.

[По пять камушков…]
1: I
2: II
3: III
5: V
6: IV = VI
7: VII
8: VIII
25: X
26: IX = XI
27: XII
28: XIII
30: XV
31: XIV = XVI
32: XVII
33: XVIII
50: XX
51: XIX = XXI
52: XXII
53: XXIII
55: XXV
56: XXIV = XXVI
57: XXVII
58: XXVIII
75: XXX
76: XXIX = XXXI
77: XXXII
78: XXXIII
80: XXXV
81: XXXIV = XXXVI
82: XXXVII
83: XXXVIII
101: XXXIX
125: L

То есть, он всё это может делать (3 и 5), но в отрыве от двоичного умножения (ему придётся умножать в СС 3 и 5, с сопутствующими таблицами).

Зато он может разделить двоичные разряды по 2, переложить их особым образом (каждая группа шириной по 2 камушка). То есть, может читать в цветной СС 8, считать в СС 2, записывать в безцветной (римской) СС 4. Тогда V, действительно, равно 4! Выпадают некоторые группы чисел, особенно, с 8 до 15 и с 24 до 31. Есть ещё такие группы, но записать числа до 5000 вполне можно (и очень красиво). Кроме того IV здесь может (и должен) отличаться от VI. Если IV = VV = 8, то и пробелы исчезают.

Здесь M.DCC.LXIX = 5729. Ясно, что они разделяли на группы, но что именно значит та или иная цифра в группе, и что они представляют из себя, если V раньше X, например — надо выбирать из множества вариантов.

[безцветная СС 4]
1: I
2: II
3: III
4: V
5: IV = VI
6: VII
7: VIII
16: X
17: IX = XI
18: XII
19: XIII
20: XV
21: XIV = XVI
22: XVII
23: XVIII
32: XX
33: XIX = XXI
34: XXII
35: XXIII
36: XXV
37: XXIV = XXVI
38: XXVII
39: XXVIII
48: XXX
49: XXIX = XXXI
50: XXXII
51: XXXIII
52: XXXV
53: XXXIV = XXXVI
54: XXXVII
55: XXXVIII
64: L
65: XXXIX = LI
66: LII
67: LIII
68: LV
69: LIV = LVI
70: LVII
71: LVIII
80: XL = LX
81: XLI = LIX = LXI
82: XLII = LXII
83: XLIII = LXIII
84: XLV = LXV
85: XLIV = XLVI = LXIV = LXVI
86: XLVII = LXVII
87: XLVIII = LXVIII
96: LXX
97: XLIX = LXIX = LXXI
98: LXXII
99: LXXIII
100: LXXV

Убрал сомнительные безцветные СС (вроде 3 и 5), оставил только безцветные СС с основанием 2, 4, 5 и традиционную римскую запись на одном графике. Безцветная 2 слишком медленно растёт (но именно с ней счётчик имеет дело при завершении умножения), 5 имеет слишком много пробелов. По сути, реальна только безцветная СС 4.




  • 1