§ Десятичный счет
В цифровой электронике все основано на том, что существует только два состояния, это 0 или 1, включено или выключено. Это называется двоичной системой счисления. Другими числами компьютер оперировать не умеет. Но спрашивается, а как тогда он умеет все так хорошо, быстро и точно вычислять? Ответ в том, что двоичные числа могут представляться в виде уникальных последовательностей, которые означают разные комбинации.В десятичной системе счисления всего лишь 10 цифр, начиная с 0 и заканчивая 9. Помимо десятичной системы, она еще и позиционная, что значит то, что цифра, которая находится левее, в 10 раз больше цифры, которая находится правее. Например, число 10 в 10 раз больше чем 1, или 40 в 10 раз больше чем 4 и так далее. Аналогично с двоичной системой. Различие только в том, что там в одной позиции может быть число от 0 до 1, и не больше. Как и в десятичной системе, число, которое находится левее, в 2 раза больше.
На примере посмотрим, как производится счет в десятичной системе счисления:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...То есть, после того как завершился цикл, после числа 9 появляется в той же позиции число 0, а в позиции левее число увеличилось на 1. Это значит что после
09
идет 10
, а не 100, например.§ Двоичный счет
А теперь сделаю то же самое, но учтем, что числа 2 не существует, а существует только 0 или 1.0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 ...Как и в десятичной системе счисления, после 9 идет 0, а тут после 1 идет 0 и добавляется левее плюс 1. То есть, когда прибавляется
0+1
, то получается, понятное дело 1, а если добавляется 1+1
, то теперь в позиции где был 1, станет 0, и левее добавится 1, то ест, станет 10.Так же и
10+1=11
, и аналогично, 11+1
создаст ситуацию что будет 0 справа, и левее добавится 1, но там и так уже был 1, и на второй позиции слева тоже станет 0 и добавится 1 левее, что станет равным 11+1=100
.Тут делается вывод, что двоичная и десятичная система счисления отличаются лишь только в количестве допустимых знаков в позиции, и только. Больше ничем.
§ Шестнадцатеричная система
Как и двоичная, или десятичная система счисления, существует еще и шестнадцатеричная, которая содержит 16 знаков в одной позиции. Зачем она нужна? Прежде всего, она нужна человеку, и она сама по себе является неким посредником между миром цифр и человеческим разумом. Дело в том, что двоичные коды читать человеку сложно, читать и воспринимать длинные последовательности нулей и единиц тяжело, поэтому для этой цели была придумана шестнадцатеричная и восьмеричная система счисления, которые отличаются количеством разрядов.Представлю таблицу, в которой укажу все системы счисления:
2 16 8 10 0000 0 0 0 0001 1 1 1 0010 2 2 2 0011 3 3 3 0100 4 4 4 0101 5 5 5 0110 6 6 6 0111 7 7 7 1000 8 10 8 1001 9 11 9 1010 A 12 10 1011 B 13 11 1100 C 14 12 1101 D 15 13 1110 E 16 14 1111 F 17 15Как по мне, самая неудобная система, это восьмеричная. Эту таблицу, если хочется быстро считать и переводить из системы в систему счисления, лучше запомнить, особенно запомнить соответствия двоичных и шестнадцатеричных кодов. Например, чтобы перевести последовательность такого числа
11011110101011011011111011101111
в 16-ричную систему счисления, необходимо разбить это число на группы по 4 цифры.1101 1110 1010 1101 1011 1110 1110 1111 D E A D B E E FСнизу же эквивалентное значение
DE AD BE EF
, которое читается намного проще. То есть группу из 8 двоичных цифр можно разбивать на 2 буквы и представлять в удобочитаемом виде.§ Регистры
В отличии от реального мира, в компьютерном пространстве количество хранимых значений не является бесконечным, что создает баг, который плавно перетекает в лютую фичу.Представим себе что у нас есть всего лишь 2 лампочки, которые можно включить или выключить, нажимая на кнопки.
Вопрос? Сколько уникальных комбинации можно составить из этих двух лампочек?
-
[00] Лампа 0 выключена, лампа 1 выключена
-
[01] Лампа 0 включена, лампа 1 выключена
-
[10] Лампа 0 выключена, лампа 1 включена
-
[11] Лампа 0 включена, лампа 1 включена
1) новая лампа будет выключена, можно составить 4 различных комбинации из 2х лампочек
2) новая включена, тоже 4 комбинации можно составить
По итогу будет теперь 8 различных комбинации. Абсолютно аналогично, удваивается количество комбинации с 8 до 16, если добавить четвертую лампу. Таким образом, получается что если 1 лампочка может символизировать только 2 состояния, то 2 лампочки уже вдвое больше, то есть 4, три лампочки еще вдвое больше, 8, и так далее, что вырисовывает следующую последовательность:
2*2*2*...*2 = 2^n
, где n-количество разрядов. Другими словами, 2 в степени n равно количеству состояний, который может символизировать регистр.И тут появляется вопрос. А что если 2 лампочки будут, и вот представим, что 00=0, 01=1, 10=2, 11=3, всего лишь 4 состояния, от 0 до 3. Прибавляя единицу, получается следующее состояние. 00+1=01, 01+1=10, 10+1=11.
А что если прибавить 11+1? Ведь по идее, должно быть 100, но нет же третьей лампочки. И тут вступает в силу определенный баг, который гласит:
Коль увидел ты, что лампады горят все, потуши их и будет ночь, и будет день, и тогда небеса с шумом прейдут, стихии же, разгоревшись, разрушатся, земля и все дела на ней сгорятЛадно. Так не будет, но суть в том, что все единицы станут нулями и после 3 будет 0. Это если говорим именно о 2 лампочках. Для 3х это число возрастет до 7, для 4х до 15 и так далее. Все зависит от разрядности регистра.