Системы счисления

Системы счисления

Для того чтобы понять, что именно мы записываем, записывая числа, нужно понять, что такое на самом деле числа и что мы записываем с помощью чисел.

Каждое целое число означает, сколько единиц (штук чего-то) содержится в этом числе (записано с помощью этого числа). То есть, речь может идти, например, о куче камней, в которой находится какое-то определённое количество камней. Мы можем записать это количество на листе бумаги, используя, например, черточки. А затем эти чёрточки пересчитать. Точно так же мы можем заменить чёрточки единичками и каждый раз пересчитывать единички. Разумеется, это неудобно, однако, гораздо проще, чем каждый раз ворочать камни в куче чтобы их пересчитывать.

Когда единичек становится очень много, пересчитывать их становится трудно, долго и появляется шанс ошибиться при подсчётах. Однако, единички можно группировать и считать их сразу группами. Например, можно считать их группами по 8. Таким образом мы можем 15 единичек записать как 1 х 8 + 7 (одна группа из 8 единиц и ещё 7 единиц, которых не хватает для составления полной группы). Заметим, что 7 — меньше выбранного нами размера группы и фактически является остатком от деления исходного числа 15 на выбранной нами размер группы — 8. А число 16 тогда можно записать как 2 х 8, то есть, две полных группы по 8 единиц.

Таким образом, для такой записи нам необходимо иметь два разряда:

  • разряд для записи свободных единичек, целиком не поместившихся в группы,
  • разряд для записи количества полных групп.

Когда количество групп становится очень большим, можно начать группировать уже сами группы. Теперь нам понадобится следующий, третий разряд, содержащий количество сгруппированных групп. И так далее.

Теперь вспомним, что такое цифра и чем цифра отличается от числа. Цифра — это символ (точно такой же как буква), с помощью которого можно записывать числа — точно так же, как с помощью букв мы записываем слова. При этом цифра — далеко не то же самое, что число. Цифра (так же как и буква) сама по себе ничего не значит, это всего лишь символ, значок. Цифра имеет смысл и значение только в записи числа. При этом не стоит путать цифры и однозначные числа — так же как не стоит путать, например, букву «а» и союз «а»: число 5 обозначает число, состоящее из 5 единиц, а цифра «5» обозначает что-то только в том случае, если она присутствует в записи числа и может обозначать далеко не только «5 единиц».

Десятичная система счисления

Мы привыкли к десятичной системе счисления просто потому что пальцев на руках у нас 10 и нам удобнее группировать единички десятками. Группы из десятков единичек можно группировать тоже десятками: будут получаться сотни, сотни опять группировать в десятки и получать тысячи, и так далее. Однако, сути это менять не будет. Нам всё равно нужно как-то записывать количество единичек.

Таким образом, числа мы записываем с помощью цифр, стоящих в соответствующих позициях — разрядах. В зависимости от положения цифры в записи числа (её места, разряда) меняется её фактическое значение: например, цифра 7 в первом разряде означает число 7, а цифра 7 во втором разряде означает 7 десятков — 7 х 10 = 70. Для третьего разряда это будет уже 7 десятков десятков — 7 х 10 х 10 =700 или 7 сотен. И так далее.

Назначение цифр — информировать нас о том, сколько единиц соответствующего разряда присутствует в данном числе. Единицей соответствующего разряда (или его весом) можно назвать количество единичек, соответствующее единице данного разряда. Например, для второго разряда это 10, для третьего 100. И так далее.

Если мы посмотрим на ряд этих величин (весов разрядов):

1
10
100
1000
10000
100000
1000000
10000000
100000000

то увидим, что все они составляют последовательные степени числа 10, основания нашей десятичной системы:

100 = 1
101 = 10
102 = 100
103 = 1000
104 = 10000
105 = 100000
106 = 1000000
107 = 10000000
108 = 100000000

То есть, например, в числе 20365 содержится 5 единиц, 6 десятков, 3 сотни, 0 тысяч и 2 десятка тысяч: 5 х 100 + 6 х 101 + 3 х 102 + 0 х 103 + 2 х 104 — всего 20365 единиц. Для того чтобы определить, сколько единиц содержится в любом числе, нам нужно разбить его на цифры по разрядам и для каждой цифры число, соответствующее этой цифре умножить на вес соответствующего разряда.

Математически разбить число, записанное в привычной нам десятичной системе счисления, на разряды проще всего путем последовательного деления этого числа на основание системы счисления — на 10.

Возьмём число 365. Остатком от деления его на 10 является число 5 — значение (цифра) первого разряда (разряда единиц):

ост. от 365 / 10 = 5 (это самый младший разряд)

Если отделить этот разряд от исходного числа, у нас останется число 36. Остатком от деления его на 10 будет 6:

ост. от 36 / 10 = 6

Отделяем от числа второй разряд и получаем число 3. Остатком от деления его на 10 будет 3:

ост. от 3 / 10 = 3

Таким образом мы математически разбили число на разряды, однако, в математике не существует операции «отделить разряд». Для этой цели можно воспользоваться следующей операцией: определить остаток от деления, а затем вычесть этот остаток из исходного числа и получившееся число поделить на 10:

ост. от 365 / 10 = 5
36 = (365 — 5) / 10

То же самое нужно проделать на каждом шаге для получения нужного результата.

Те же самые операции, записанные в «столбик»:

Теперь, когда у нас есть цифры всех разрядов числа, мы можем собрать значение самого числа (количество единичек в этом числе):

5 х 100 + 6 х 101 + 3 х 102 = 5 х 1 + 6 х 10 + 3 х 100 = 5 + 60 + 300 = 365

Мы научились выполнять два преобразования: разбили число на разряды, а затем преобразовали число в количество единиц, которое записано с помощью цифр в десятичной системе счисления. Точно такие же операции используются для перевода чисел из одной системы счисления в другую.

Двоичная система счисления

Двоичная система счисления была придумана очень давно. Однако с появлением первых компьютеров оказалось, что именно она наиболее удобна для взаимодействия с компьютерами, потому что в электронных схемах компьютеров существует два элементарных состояния: «включено» и «выключено», которые очень легко обозначить цифрами 0 и 1.

Основанием двоичной системы счисления является число 2, а цифрами в этой системе являются 0 и 1. Для удобства восприятия у двоичных чисел принято писать индекс в виде цифры 2, обозначающий, что число записано в двоичной системе счисления (или, как часто говорят «двоичное число»):

10011012

Точно так же как в десятичной системе счисления, в двоичной системе счисления значение числа (количество единичек) определяется записью цифр в соответствующие разряды. Только разряды эти двоичные: в каждом из них может быть либо 0, либо 1 и веса этих разрядов определяются не степенями 10 (как в привычной нам десятичной системе счисления), а степенями 2.

Запишем эти степени, чтобы понять, как определить значение двоичных чисел:

20 = 1
21 = 2
22 = 4
23 = 8
24 = 16
25 = 32
26 = 64
27 = 128
28 = 256
29 = 512
210 = 1024

Теперь возьмём двоичное число, например 10110012, и определим его значение (сколько в нём единичек). Для этого разобьем его на разряды и, так же как для десятичного числа, умножим значения цифр, стоящих в этих разрядах на соответствующие этим разрядам степени 2 (веса этих разрядов):

1 х 20 + 0 х 21 + 0 х 22 + 1 х 23 + 1 х 24 + 0 х 25 + 1 х 26 = 1 + 0 + 0 + 8 + 16 + 0 + 64 = 89

Таким образом, двоичному числу 10110012 соответствует десятичное число 89.

Для обратного преобразования воспользуемся тем же методом, которым мы разбивали на десятичные разряды число 365: будем его пошагово делить с остатком на основание той системы счисления, запись в которой мы хотим получить (в данном случае — 2):

ост. от 365 / 2 = 1 (это будет самый младший разряд)
182 = (365 — 1) / 2
результат деления числа 365 с учётом остатка (это число 364 = 365 — 1) на 2 = 182

ост. от 182 / 2 = 0
91 = (182 — 0) / 2
результат деления числа 182 с учётом остатка (а это число 182 = 182 — 0) на 2 = 91

ост. от 91 / 2 = 1
45 = (91 — 1) / 2

ост. от 45 / 2 = 1
22 = (45 — 1) / 2

ост. от 22 / 2 = 0
11 = (22 — 0) / 2

ост. от 11 / 2 = 1
5 = (11 — 1) / 2

ост. от 5 / 2 = 1
2 = (5 — 1) / 2

ост. от 2 / 2 = 0
1 = (2 — 0) / 2

ост. от 1 / 2 = 1
на этом наше число заканчивается. Больше единичек в этом числе не осталось.

Те же самые операции, записанные в «столбик»:

Полученное двоичное число записывается точно так же как и десятичное:

1011011012

Таким образом, десятичному числу 365 соответствует двоичное число 1011011012 , что нетрудно проверить, выполнив обратное преобразование — разобьем наше двоичное число на разряды и умножим значения цифр, стоящих в этих разрядах на соответствующие этим разрядам степени числа 2 (основания двоичной системы счисления):

1 х 20 + 0 х 21 + 1 х 22 + 1 х 23 + 0 х 24 + 1 х 25 + 1 х 26 + 0 х 27 + 1 х 28 = 1 + 0 + 4 + 8 + 0 + 32 + 64 + 0 + 256 = 365

Восьмеричная система счисления

Все вышеперечисленное относится к любой позиционной (разрядной) системе счисления. Все операции должны учитывать основание системы и, как следствие, количество цифр. Так в восьмеричной системе счисления основанием является число 8, и цифр тоже всего 8: от 0 до 7.

Поэтому для работы в этой системе нам необходимо знать степени 8:

80 = 1
81 = 8
82 = 64
83 = 512
84 = 4096

Поэтому число 15 в восьмеричной системе будет записано как 178. Это можно записать в виде равенства, если указать в качестве индекса основание системы счисления:

1510 = 178

А восьмеричное число 126 содержит в себе 86 единичек и равно, соответственно, десятичному числу 86:

1268 = 6 х 80 + 2 х 81 + 1 х 82 = 6 + 16 + 64 = 8610

При переводе любого десятичного числа в восьмеричное мы должны точно так же, как и в предыдущих случаях, пошагово делить его на основание системы счисления (8) с остатком, в результате чего полученные остатки и составят разряды нашего восьмеричного числа:

ост. от 365 / 8 = 5
45 = (365  —  5) / 8

ост. от 45 / 8 = 5
5 = (45 — 5) / 8

ост. от 5 / 8 = 5

Те же самые операции, записанные в «столбик»:

Таким образом:

36510 = 5558

Для выполнения обратного преобразования разобьём получившееся восьмеричное число на разряды и посчитаем количество единичек с учётом весов соответствующих восьмеричных разрядов:

5558 = 5 х 80 + 5 х 81 + 5 х 82 = 5 + 40 + 320 = 365

Шестнадцатеричная система счисления

Чуть более сложная ситуация возникает когда основание системы счисления больше 10 и обычных десятичных цифр просто не хватает для записи чисел. Для шестнадцатеричной системы счисления в качестве недостающих 5 цифр (11 — 15) решено было использовать первые буквы латинского (английского) алфавита: A, B, C, D, E, F, где:

A = 1010
B = 1110
С = 1210
D = 1310
E = 1410
F = 1510

Таким образом, число F16 соджержит 15 единичек и может быть записано в виде обычного десятичного числа 15. Для работы с шестнадцатеричной системой счисления необходимо знать степени числа 16:

160 = 1
161 = 16
162 = 256
163 = 4096
164 = 65536

Так шестнадцатеричное число А29 равно десятичному числу 2601:

А2916 = 9 х 160 + 2 х 161 + 10 х 162 = 9 + 32 + 2560 = 2601

При переводе любого десятичного числа в шестнадцатеричное мы будем пошагово делить его на 16 с остатком, а полученные остатки и составят разряды нашего шестнадцатеричного числа:

ост. от 365 / 16 = 13 (D16)
22 = (365  —  13) / 16

ост. от 22 / 16 = 6
1 = (22  —  6) / 16

ост. от 1 / 16 = 1

Те же самые операции, записанные в «столбик»:

Получаем:

36510  = 16D16

Максимальное число

Если в обычной математике числа могут быть сколь угодно большими и сколь угодно малыми, а бесконечность — вполне адекватное понятие, то для компьютера это не так. Коспьютер может оперировать лишь конечными величинами. И эти ограничения могут быть связаны, например, с разрядностью процессора или размером ячеек памяти, ктотрые могут быть размером 1 байт (8 бит), 2 байта, 4, 8, и даже 16 байт. При этом целые числа, которые можно записывать в такие ячейки памяти не могут быть бесконечно большими. Так в 1 байт можно записать положительные целые числа от 0 до 255 (без знака):

010 = 000000002
25510 = 111111112

или, если один разряд ячейки использовать для хранения знака числа, то можно будет хранить меньшие числа: от -127 до +127. Также один байт может содержать два шестнадцатеричных разряда, например, максимальное значение будет равно FF16 = 25510.

Для того чтобы легко и быстро определить максимальное число, которое можно записать в какую-то ячейку памяти достаточно отбросить знаковый разряд, если ячейка предназначена для чисел со знаком, а затем определить степень двойки, соответсвующую разряду на 1 большему, чем самый старший значащий разряд в ячейке памяти (разряд для знака — не значащий) и вычесть из соответствующего числа 1. Возьмём, например, один байт без знака:
количество разрядов — 8,
степень двойки, соответствующая старшему разряду — 7,
увеличиваем степень на 1 — получаем 8 (исходное количество разрядов!),
возводим 2 в 8 степень — получаем 256,
отнимаем единицу — получаем 255.

Или совсем просто: количество разрядов — 8, возводим 2 в 8 степень — получаем 256, отнимаем единицу — получаем 255.

Если рассмотреть ячейку в один байт для хранения целого числа со знаком, то:
количество разрядов будет — 7 (1 разряд — для хранения знака числа),
степень двойки, соответствующая старшему разряду — 6,
увеличиваем степень на 1 — получаем 7,
возводим 2 в 7 степень — получаем 128,
отнимаем единицу — получаем 127.

То же самое можно проделать для любой ячейки памяти: например, 10 двоичных разрядов могут хранить целые числа без знака в диапазоне от 0 до 1023 (210 — 1 = 1023), а со знаком, соответственно, от -511 до +511 (29 — 1 = 511, один разряд — для хранения знака числа).

Правило вычитания единицы применимо к любой системе счисления, так как добавление единицы к максимальному числу приводит к увеличению разрядности числа:

Максимальное трёхзначное десятичное число — это 999: количество разрядов — 3, возводим 10 в 3 степень — получаем 1000, отнимаем единицу — получаем 999.

Максимальное двухзначное шестнадцатеричное число — это FF или 25510 количество разрядов — 2, возводим 16 в 2 степень — получаем 256, отнимаем единицу — получаем 255.

Быстрый переход между системами

Для того чтобы перевести число из одной системы в другую можно, например, сначала перевести его в десятичную, а потом из десятичной — в нужную нам систему.

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

Наиболее просто начать с перехода между четверичной и двоичной системами. Здесь два разряда двоичной системы будут соответствовать одному разряду четверичной:

002 = 04
012 = 14
102 = 24
112 = 34

Поэтому при переходе от двоичной к четверичной системе мы просто будем разбивать двоичное число на пары разрядов, начиная с младшего (справа налево), и дополняя, при необходимости, последний двоичный разряд (если число разрядов в двоичном числе было нечётным) предстоящим нулём до пары:

10010100100112

разбиваем на пары и дополняем нечётный старший разряд нулём:

01 00 10 10 01 00 11

теперь ставим в соответствие каждой паре её значение, записанное в четверичной системе:

1 0 2 2 1 0 3

Таким образом:

10010100100112 = 10221034

То же самое нужно сделать для того, чтобы быстро перейти от двоичной системы к восьмеричной, но тут двоичное число необходимо разбивать уже на так называемые триады (группы по три цифры), начиная от младших разрядов и заканчивая старшими, и дополняя нулями последнюю триаду, если она окажется неполной (содержит одну или две цифры). Каждая триада будет соответсвовать одному восьмеричному разряду:

0002 = 08
0012 = 18
0102 = 28
0112 = 38
1002 = 48
1012 = 58
1102 = 68
1112 = 78

Например, для перевода числа 11011102 в восьмеричную систему разобьём его на триады с дополнением старшей триады нулями:

001 101 110

теперь поставим в соответствие каждой триаде её значение в восьмеричной системе:

1 5 6

получим:

11011102 = 1568

Лёгкий переход в шестнадцатеричную систему и обратно удобен для двоичной и четверичной систем: здесь разряды двоичного числа нужно разбивать на четвёрки (иногда называемые «тетрадами»), а четверичного — на пары. Так, например:

316 = 034 = 00112
716 = 134 = 01112
A16 = 224 = 10102
D16 = 314 = 11012
F16 = 334 = 11112

Таким образом, переход между системами счисления, имеющими в качестве основания различные степени одного и того же числа в некоторых случаях упрощается за счет возможности группировки разрядов.

Заключение

Мы рассмотрели основные системы счисления, использующиеся в вычислительной технике и информатике и преобразования между ними. Надо сказать, что оптимальным основанием для компьютерной системы счисления математики считают не число 2 и даже не число 3, а число e (иногда такую систему счисления называют «e-ичная»). Число e является основанием натурального логарифма, математической константой, иррациональным и трансцендентным числом, которое играет важную роль в дифференциальном и интегральном исчислении, а также во многих других разделах математики. Поскольку функция экспоненты ex интегрируется и дифференцируется «сама в себя», логарифмы по основанию числа e называются натуральными.

Приблизительное значение числа e = 2,7182818284590452353602874713527…

Первые 1000 знаков числа e после запятой:
2,7182818284 5904523536 0287471352 6624977572 4709369995 9574966967 6277240766 3035354759 4571382178 5251664274 2746639193 2003059921 8174135966 2904357290 0334295260 5956307381 3232862794 3490763233 8298807531 9525101901 1573834187 9307021540 8914993488 4167509244 7614606680 8226480016 8477411853 7423454424 3710753907 7744992069 5517027618 3860626133 1384583000 7520449338 2656029760 6737113200 7093287091 2744374704 7230696977 2093101416 9283681902 5515108657 4637721112 5238978442 5056953696 7707854499 6996794686 4454905987 9316368892 3009879312 7736178215 4249992295 7635148220 8269895193 6680331825 2886939849 6465105820 9392398294 8879332036 2509443117 3012381970 6841614039 7019837679 3206832823 7646480429 5311802328 7825098194 5581530175 6717361332 0698112509 9618188159 3041690351 5988885193 4580727386 6738589422 8792284998 9208680582 5749279610 4841984443 6346324496 8487560233 6248270419 7862320900 2160990235 3043699418 4914631409 3431738143 6405462531 5209618369 0888707016 7683964243 7814059271 4563549061 3031072085 1038375051 0115747704 1718986106 8739696552 1267154688 9570350354 …

Поделиться: 

Пишите нам в комментариях, какие элементарные или кажущиеся таковыми, вопросы из различных областей человеческих знаний вам хотелось бы разобрать:

Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать rubasic.ru, вы соглашаетесь на использование файлов cookie.
Понятно