Чтобы быстро переводить числа из десятичной системы счисления в двоичную, нужно хорошо знать числа "2 в степени". Например, 2 10 =1024 и т.д. Это позволит решать некоторые примеры на перевод буквально за секунды. Одной из таких задач является задача A1 из демо ЕГЭ 2012 года . Можно, конечно, долго и нудно делить число на "2". Но лучше решать по-другому, экономя драгоценное время на экзамене.
Метод очень простой. Суть его такая: если число, которое нужно перевести из десятичной системы, равно числу "2 в степени", то это число в двоичной системе содержит количество нулей, равное степени. Впереди этих нулей добавляем "1".
Аналогично и для других чисел "2 в степени".
Если число, которое нужно перевести, меньше числа "2 в степени" на 1, то в двоичной системе это число состоит только из единиц, количество которых равно степени.
На рисунке квадратиками обозначено двоичное представление числа, а слева розовым цветом-десятичное.
Аналогичен перевод и для других чисел "2 в степени-1".
Понятно, что перевод чисел от 0 до 8 можно сделать быстро или делением, или просто знать наизусть их представление в двоичной системе. Я привела эти примеры, чтобы Вы поняли принцип данного метода и использовали его для перевода более "внушительных чисел", например, для перевода чисел 127,128, 255, 256, 511, 512 и т.д.
Можно встретить такие задачи, когда нужно перевести число, не равное числу "2 в степени", но близкое к нему. Оно может быть больше или меньше числа "2 в степени". Разница между переводимым числом и числом "2 в степени" должна быть небольшая. Например, до 3. Представление чисел от 0 до 3 в двоичной системе надо просто знать без перевода.
Если число
больше
, то решаем так:
Переводим сначала число "2 в степени" в двоичную систему. А потом прибавляем к нему разницу между числом "2 в степени" и переводимым числом.
Например, переведем 19 из десятичной системы. Оно больше числа "2 в степени" на 3.
16=2 4 . 16 10 =10000 2 .
3 10 =11 2 .
19 10 =10000 2 +11 2 =10011 2 .
Если число меньше числа "2 в степени", то удобнее пользоваться числом "2 в степени-1". Решаем так:
Переводим сначала число "2 в степени-1" в двоичную систему. А потом вычитаем из него разницу между числом "2 в степени-1" и переводимым числом.
Например, переведем 29 из десятичной системы. Оно больше числа "2 в степени-1" на 2. 29=31-2.
31 10 =11111 2 .
2 10 =10 2 .
29 10 =11111 2 -10 2 =11101 2
Если разница между переводимым числом и числом "2 в степени" больше трех , то можно разбить число на составляющие, перевести каждую часть в двоичную систему и сложить.
Например, перевести число 528 из десятичной системы. 528=512+16. Переводим отдельно 512 и 16.
512=2 9
. 512 10 =1000000000
2 .
16=2 4
. 16 10 =10000
2 .
Теперь сложим столбиком:
Замечание 1
Если вы хотите перевести число из одной системы счисления в другую, то удобнее для начала перевести его в десятичную систему счисления, и уже только потом из десятичной перевести в любую другую систему счисления.
В вычислительной технике, использующей машинную арифметику, большую роль играет преобразование чисел из одной системы счисления в другую. Ниже приведем основные правила таких преобразований (переводов).
При переводе двоичного числа в десятичное требуется представить двоичное число в виде многочлена , каждый элемент которого представлен в виде произведения цифры числа и соответствующей степени числа основания, в данном случае $2$, а затем нужно вычислить многочлен по правилам десятичной арифметики:
$X_2=A_n \cdot 2^{n-1} + A_{n-1} \cdot 2^{n-2} + A_{n-2} \cdot 2^{n-3} + ... + A_2 \cdot 2^1 + A_1 \cdot 2^0$
Рисунок 1. Таблица 1
Пример 1
Число $11110101_2$ перевести в десятичную систему счисления.
Решение. Используя приведенную таблицу $1$ степеней основания $2$, представим число в виде многочлена:
$11110101_2 = 1 \cdot 27 + 1 \cdot 26 + 1 \cdot 25 + 1 \cdot 24 + 0 \cdot 23 + 1 \cdot 22 + 0 \cdot 21 + 1 \cdot 20 = 128 + 64 + 32 + 16 + 0 + 4 + 0 + 1 = 245_{10}$
Для перевода числа из восьмеричной системы счисления в десятичную требуется представить его в виде многочлена, каждый элемент которого представлен в виде произведения цифры числа и соответствующей степени числа основания, в данном случае $8$, а затем нужно вычислить многочлен по правилам десятичной арифметики:
$X_8 = A_n \cdot 8^{n-1} + A_{n-1} \cdot 8^{n-2} + A_{n-2} \cdot 8^{n-3} + ... + A_2 \cdot 8^1 + A_1 \cdot 8^0$
Рисунок 2. Таблица 2
Пример 2
Число $75013_8$ перевести в десятичную систему счисления.
Решение. Используя приведенную таблицу $2$ степеней основания $8$, представим число в виде многочлена:
$75013_8 = 7\cdot 8^4 + 5 \cdot 8^3 + 0 \cdot 8^2 + 1 \cdot 8^1 + 3 \cdot 8^0 = 31243_{10}$
Для перевода числа из шестнадцатеричной системы счисления в десятичную необходимо его представить в виде многочлена, каждый элемент которого представлен в виде произведения цифры числа и соответствующей степени числа основания, в данном случае $16$, а затем нужно вычислить многочлен по правилам десятичной арифметики:
$X_{16} = A_n \cdot 16^{n-1} + A_{n-1} \cdot 16^{n-2} + A_{n-2} \cdot 16^{n-3} + ... + A_2 \cdot 16^1 + A_1 \cdot 16^0$
Рисунок 3. Таблица 3
Пример 3
Число $FFA2_{16}$ перевести в десятичную систему счисления.
Решение. Используя приведенную таблицу $3$ степеней основания $8$, представим число в виде многочлена:
$FFA2_{16} = 15 \cdot 16^3 + 15 \cdot 16^2 + 10 \cdot 16^1 + 2 \cdot 16^0 =61440 + 3840 + 160 + 2 = 65442_{10}$
Пример 4
Число $22_{10}$ перевести в двоичную систему счисления.
Решение:
Рисунок 4.
$22_{10} = 10110_2$
Пример 5
Число $571_{10}$ перевести в восьмеричную систему счисления.
Решение:
Рисунок 5.
$571_{10} = 1073_8$
Пример 6
Число $7467_{10}$ перевести в шестнадцатеричную систему счисления.
Решение:
Рисунок 6.
$7467_{10} = 1D2B_{16}$
Для того чтобы перевести правильную дробь из десятичной системы счисления в недесятичную, необходимо дробную часть преобразуемого числа последовательно умножить на основание той системы, в которую ее требуется перевести. Дробь в новой системе будет представлена в виде целых частей произведений, начиная с первого.
Например: $0,3125_{(10)}$ в восьмеричной системе счисления будет выглядеть как $0,24_{(8)}$.
В данном случае можно столкнуться с проблемой, когда конечной десятичной дроби может соответствовать бесконечная (периодическая) дробь в недесятичной системе счисления. В данном случае количество знаков в дроби, представленной в новой системе, будет зависеть от требуемой точности. Также нужно отметить, что целые числа остаются целыми, а правильные дроби - дробями в любой системе счисления.
Рисунок 7. Таблица 4
Пример 7
Число $1001011_2$ перевести в восьмеричную систему счисления.
Решение . Используя таблицу 4, переведем число из двоичной системы счисления в восьмеричную:
$001 001 011_2 = 113_8$
1. Порядковый счет в различных системах счисления.
В современной жизни мы используем позиционные системы счисления, то есть системы, в которых число, обозначаемое цифрой, зависит от положения цифры в записи числа. Поэтому в дальнейшем мы будем говорить только о них, опуская термин «позиционные».
Для того чтобы научиться переводить числа из одной системы в другую, поймем, как происходит последовательная запись чисел на примере десятичной системы.
Поскольку у нас десятичная система счисления, мы имеем 10 символов (цифр) для построения чисел. Начинаем порядковый счет: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Цифры закончились. Мы увеличиваем разрядность числа и обнуляем младший разряд: 10. Затем опять увеличиваем младший разряд, пока не закончатся все цифры: 11, 12, 13, 14, 15, 16, 17, 18, 19. Увеличиваем старший разряд на 1 и обнуляем младший: 20. Когда мы используем все цифры для обоих разрядов (получим число 99), опять увеличиваем разрядность числа и обнуляем имеющиеся разряды: 100. И так далее.
Попробуем сделать то же самое в 2-ной, 3-ной и 5-ной системах (введем обозначение для 2-ной системы, для 3-ной и т.д.):
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 | 2 | 2 |
3 | 11 | 10 | 3 |
4 | 100 | 11 | 4 |
5 | 101 | 12 | 10 |
6 | 110 | 20 | 11 |
7 | 111 | 21 | 12 |
8 | 1000 | 22 | 13 |
9 | 1001 | 100 | 14 |
10 | 1010 | 101 | 20 |
11 | 1011 | 102 | 21 |
12 | 1100 | 110 | 22 |
13 | 1101 | 111 | 23 |
14 | 1110 | 112 | 24 |
15 | 1111 | 120 | 30 |
Если система счисления имеет основание больше 10, то нам придется вводить дополнительные символы, принято вводить буквы латинского алфавита. Например, для 12-ричной системы кроме десяти цифр нам понадобятся две буквы ( и ):
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
9 | 9 |
10 | |
11 | |
12 | 10 |
13 | 11 |
14 | 12 |
15 | 13 |
2.Перевод из десятичной системы счисления в любую другую.
Чтобы перевести целое положительное десятичное число в систему счисления с другим основанием, нужно это число разделить на основание. Полученное частное снова разделить на основание, и дальше до тех пор, пока частное не окажется меньше основания. В результате записать в одну строку последнее частное и все остатки, начиная с последнего.
Пример 1. Переведем десятичное число 46 в двоичную систему счисления.
Пример 2. Переведем десятичное число 672 в восьмеричную систему счисления.
Пример 3. Переведем десятичное число 934 в шестнадцатеричную систему счисления.
3. Перевод из любой системы счисления в десятичную.
Для того, чтобы научиться переводить числа из любой другой системы в десятичную, проанализируем привычную нам запись десятичного числа.
Например, десятичное число 325 – это 5 единиц, 2 десятка и 3 сотни, т.е.
Точно так же обстоит дело и в других системах счисления, только умножать будем не на 10, 100 и пр., а на степени основания системы счисления. Для примера возьмем число 1201 в троичной системе счисления. Пронумеруем разряды справа налево начиная с нуля и представим наше число как сумму произведений цифры на тройку в степени разряда числа:
Это и есть десятичная запись нашего числа, т.е.
Пример 4. Переведем в десятичную систему счисления восьмеричное число 511.
Пример 5. Переведем в десятичную систему счисления шестнадцатеричное число 1151.
4. Перевод из двоичной системы в систему с основанием «степень двойки» (4, 8, 16 и т.д.).
Для преобразования двоичного числа в число с основанием «степень двойки» необходимо двоичную последовательность разбить на группы по количеству цифр равному степени справа налево и каждую группу заменить соответствующей цифрой новой системы счисления.
Например, Переведем двоичное 1100001111010110 число в восьмеричную систему. Для этого разобьем его на группы по 3 символа начиная справа (т.к. ), а затем воспользуемся таблицей соответствия и заменим каждую группу на новую цифру:
Таблицу соответствия мы научились строить в п.1.
0 | 0 |
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
Т.е.
Пример 6. Переведем двоичное 1100001111010110 число в шестнадцатеричную систему.
0 | 0 |
1 | 1 |
10 | 2 |
11 | 3 |
100 | 4 |
101 | 5 |
110 | 6 |
111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
5.Перевод из системы с основанием «степень двойки» (4, 8, 16 и т.д.) в двоичную.
Этот перевод аналогичен предыдущему, выполненному в обратную сторону: каждую цифру мы заменяем группой цифр в двоичной системе из таблицы соответствия.
Пример 7. Переведем шестнадцатеричное число С3A6 в двоичную систему счисления.
Для этого каждую цифру числа заменим группой из 4 цифр (т.к. ) из таблицы соответствия, дополнив при необходимости группу нулями вначале:
В одном из наших материалов мы рассмотрели определение . Оно имеет самый короткий алфавит. Только две цифры: 0 и 1. Примеры алфавитов позиционных систем счисления приведены в таблице.
Название системы |
Основание |
Алфавит |
Двоичная |
||
Троичная |
||
Четверичная |
||
Пятеричная |
||
Восьмеричная |
||
Десятичная |
0,1,2,3,4,5,6,7,8,9 |
|
Двенадцатеричная |
0,1,2,3,4,5,6,7,8,9,А,В |
|
Шестнадцатеричная |
0,1,2,3,4,5,6,7,8,9,А,В,С,D,E,F |
|
Тридцатишестиричная |
0,1,2,3,4,5,6,7,8,9,А,В,С,D,E,F,G, H,I,J,K,L,M,N,O,P,R,S,T,U,V,X,Y,Z |
Для перевода небольшого числа из десятичного в двоичное, и обратно, лучше пользоваться следующей таблицей.
десятичное число |
двоичное число |
десятичное число |
двоичное число |
Однако таблица получится огромной, если записать туда все числа. Искать среди них нужное число будет уже сложнее. Гораздо проще запомнить несколько алгоритмов перевода чисел из одной позиционной системы счисления в другую.
Как сделать перевод из одной системы счисления в другую? В информатике существует несколько простых способов перевода десятичных чисел в двоичные числа. Рассмотрим два из них.
Допустим, требуется перевести число 637 десятичной системы в двоичную систему.
Делается это следующим образом: отыскивается максимальная степень двойки, чтобы два в этой степени было меньше или равно исходному числу.
В нашем случае это 9, т.к. 2 9 =512 , а 2 10 =1024 , что больше нашего начального числа. Таким образом, мы получили число разрядов результата. Оно равно 9+1=10. Значит, результат будет иметь вид 1ххххххххх, где вместо х может стоять 1 или 0.
Найдем вторую цифру результата. Возведем двойку в степень 9 и вычтем из исходного числа: 637-2 9 =125. Затем сравниваем с числом 2 8 =256 . Так как 125 меньше 256, то девятый разряд будет 0, т.е. результат уже примет вид 10хххххххх.
2 7 =128 > 125 , значит и восьмой разряд будет нулём.
2 6 =64 , то седьмой разряд равен 1. 125-64=61 Таким образом, мы получили четыре старших разряда и число примет вид 10011ххххх.
2 5 =32 и видим, что 32 < 61, значит шестой разряд равен 1 (результат 100111хххх), остаток 61-32=29.
2 4 =16 < 29 - пятый разряд 1 => 1001111ххх. Остаток 29-16=13.
2 3 =8 < 13 => 10011111хх. 13-8=5
2 2 =4 < 5 => 10011111хх, остаток 5-4=1.
2 1 =2 > 1 => 100111110х, остаток 2-1=1.
2 0 =1 => 1001111101.
Это и будет конечный результат.
Правило перевода целых десятичных чисел в двоичную систему счисления, гласит:
Исходное число в двоичной системе счисления составляется последовательной записью полученных остатков. Записывать его начинаем с последнего найденного.
Переведём десятичное число 11 в двоичную систему счисления. Рассмотренную выше последовательность действий (алгоритм перевода) можно изобразить так:
Получили 11 10 =1011 2 .
Если десятичное число достаточно большое, то более удобен следующий способ записи рассмотренного выше алгоритма:
363 10 =101101011 2
Привет, посетитель сайта сайт! Продолжаем изучать и протокол сетевого уровня IP, а если быть более точным, то его версию IPv4. На первый взгляд тема двоичных чисел и двоичной системы счисления не имеет отношения к протоколу IP, но если вспомнить, что компьютеры работают с нулями и единицами, то оказывается, что двоичная система и ее понимание — это основа основ, нам нужно научиться переводить числа из двоичной системы счисления в десятичную и наоборот: из десятичной в двоичную . Это нам поможет лучше понять протокол IP, а также принцип работы масок сети переменной длины. Давайте приступать!
Если тема компьютерных сетей вам интересна, то можете ознакомиться с другими записями курса.
Прежде чем мы начнем, стоит вообще объяснить зачем нужна эта тема сетевому инженеру. Хотя вы могли убедиться в ее необходимости, когда мы говорили , но, вы можете сказать, что есть IP-калькуляторы, которые существенно облегчают задачу по распределению IP-адресов, вычислению нужных масок подсетей/сетей и определению номера сети и номера узла в IP-адресе. Так-то оно так, но IP-калькулятор не всегда под рукой, это причина номер раз. Причина номер два заключается в том, что на экзаменах Cisco вам не дадут IP-калькулятор и все преобразования IP-адресов из десятичной системы счисления в двоичную вам придется делать на листе бумаги , а вопросов, где это требуется на экзамене/экзаменах по получению сертификата CCNA не так уж и мало, будет обидно, если из-за такой мелочи экзамен будет завален. Ну и наконец понимания двоичной системы счисления ведет к лучшему пониманию принципа работы .
Вообще сетевой инженер не обязан уметь делать перевод чисел из двоичной системы счисления в десятичную и наоборот в уме. Более того, это редко кто умеет делать в уме, в основном к такой категории относятся преподаватели различных курсов по компьютерным сетям, так как они сталкиваются с этим постоянно изо дня в день. Но при помощи листа бумаги и ручки вам стоит научиться осуществлять перевод.
Давайте начнем с простого и поговорим про двоичные цифры и числа , вы же знаете, что цифры и числа – это две разные вещи. Цифра – это специальный символ для обозначения, а число – это абстрактная запись, означающая количество. Например, чтобы записать, что у нас пять пальцев на руке мы можем использовать римские и арабский цифры: V и 5. В данном случае пять является одновременно и числом, и цифрой. А, например, для записи числа 20 мы используем две цифры: 2 и 0.
Итого, в десятичной системе счисления у нас есть десять цифр или десять символов (0,1,2,3,4,5,6,7,8,9), комбинируя которые мы можем записывать различные числа. Каким принципом мы руководствуемся, используя десятичную систему счисления? Да все очень просто, мы возводим десятку в ту или иную степень, для примера возьмём число 321. Как его можно записать по-другому, да вот так: 3*10 2 +2*10 1 +1*10 0 . Таким образом получается, что число 321 представляет собой три разряда:
То есть в данной записи двойка это не просто двойка, а две десятки или два раза по десять. А тройка это не просто тройка, а три раза по сто. Получается такая зависимость: единица каждого следующего разряда в десять раз больше единицы предыдущего, ведь, что такое 300 – это три раза по сто. Отступление по поводу десятичной системы счисление было нужно, чтобы проще понять двоичную.
В двоичной системе счисления всего две цифры: 0 и 1 . Поэтому запись числа в двоичной системе зачастую гораздо больше, чем в десятичной. За исключением чисел 0 и 1, ноль в двоичной системе счисления равен нулю в десятичной, аналогично и для единицы. Иногда, чтобы не перепутать в какой системе счисления записано число, используют суб-индексы: 267 10 , 10100 12 , 4712 8 . Число в суб-индексе указывает на систему счисления.
Для записи двоичных чисел могут быть использованы символы 0b и &(амперсанд): 0b10111, &111 . Если в десятичной системе счисления, чтобы произнести число 245 мы воспользуемся вот такой конструкцией: двести сорок пять, то в двоичной системе счисления чтобы назвать число, нам нужно произнести цифру из каждого разряда, например, число 1100 в двоичной системе счисления следует произносить не как тысяча сто, а как один, один, ноль, ноль. Давайте посмотрим на запись чисел от 0 до 10 в двоичной системе счисления:
Думаю, логика должна быть уже понятна. Если в десятичной системе счисления для каждого разряда у нас было доступно десять вариантов (от 0 до 9 включительно), то в двоичной системе счисления в каждом из разрядов двоичного числа у нас только два варианта: 0 или 1 .
Для работы с IP-адресами и масками подсети нам достаточно натуральных чисел в двоичной системе счисления, хотя двоичная система позволяет записывать дробные и отрицательные числа, но нам это без надобности .
Давайте лучше разберемся с тем, как преобразовать число из десятичной системы счисления в двоичную . И тут все на самом деле очень и очень просто, хотя на словах объяснить трудно, поэтому сразу приведу пример преобразования чисел из десятичной системы счисления в двоичную . Возьмем число 61, чтобы выполнить преобразование в двоичную систему, нам нужно это число делить на два и смотреть, что получается в остатке от деления. А результат деления снова делить на два. В данном случае 61 – это делимое, в качестве делителя у нас всегда будет двойка, а частное (результат деления) мы делим снова на два, продолжаем деление до тех пор, пока в частном не окажется 1, эта последняя единица и будет крайним левым разрядом. Рисунок ниже это демонстрирует.
При этом обратите внимание, что число 61, это не 101111, а 111101, то есть выписываем результат с конца. Единицу в последнем частном смысла делить на два нет, поскольку в данном случае используется целочисленное деление, а при таком подходе получается так, как на Рисунке 4.4.2.
Это не самый быстрый способ перевода числа из двоичной системы счисления в десятичную
. У нас есть несколько ускорителей. Например, число 7 в двоичной системе записывается как 111, число 3 как 11, а число 255 как 11111111. Все эти случаи до безобразия просты. Дело в том, что числа 8, 4, и 256 являются степенями двойки, а числа 7, 3 и 255 на единицу меньше этих чисел. Так вот для числа, которые на единицу меньше, чем число равное степени двойки, действует простое правило: в двоичной системе такое десятичное число записывается количеством единиц равным степени двойки. Так, например, число 256 это два в восьмой степени, следовательно, 255 записывается как 11111111, а число 8 это два в третьей степени, а это говорит нам о том, что 7 в двоичной системе счисления будет записано как 111. Ну а понять, как записать 256, 4 и 8 в двоичной системе счисления тоже не трудно, достаточно просто прибавить единицу: 256 = 11111111 + 1 = 100000000; 8 = 111 + 1 = 1000; 4 = 11 + 1 = 100.
Любой свой результат вы можете проверить на калькуляторе и по началу лучше так и делать.
Как видим, делить мы еще не разучились. И теперь можем двигаться дальше.
Преобразование чисел из двоичной системы счисления выполняется гораздо проще, чем перевод из десятичной в двоичную. В качестве примера перевода будем использовать число 11110. Обратите внимание на табличку ниже, она показывает степень, в которую нужно возвести двойку, чтобы потом в итоге получить десятичное число.
Чтобы из этого двоичной числа получить десятичное, нужно каждое число в разряде умножить на два в степени, а затем сложить результаты перемножения, проще показать:
1*2 4 +1*2 3 +1*2 2 +1*2 1 +0*2 0 = 16+8+4+2+0=30
Откроем калькулятор и убедимся, что 30 в десятичной системе счисления, это 11110 в двоичной.
Видим, что всё сделано верно. Из примера видно, что перевод числа из двоичной системы счисления в десятичную выполняется куда проще, чем обратный перевод . Чтобы уверенно работать с нужно лишь помнить степени двойки до 2 8 . Для наглядности приведу таблицу.
Нам больше и не нужно, поскольку максимально возможное число, которое можно записать в один байт (8 бит или восемь двоичных значений) равно 255, то есть в каждом октете IP-адреса или маски подсети протокола IPv4 максимально возможное значение — 255. В есть поля, в которых есть значения больше 255, но их нам рассчитывать не нужно.
Давайте теперь посмотрим на операции, которые можно выполнять с двоичными числами . Начнем с простых арифметических операций, а затем перейдем к операциям булевой алгебры.
Складывать двоичные числа не так уж сложно: 1+0 =1; 1+1=0 (в дальнейшем дам пояснение); 0+0=0. Это были простые примеры, где использовался лишь один разряд, давайте посмотрим на примеры, где количество разрядов больше, чем один.
101+1101 в десятичной системе это будет 5 + 13 = 18. Давайте посчитаем в столбик.
Результат выделен оранжевым цветом, калькулятор говорит, что мы посчитали верно, можете проверить. Теперь давайте смотреть почему так получилось, ведь вначале я написал, что 1+1=0, но это для случая, когда у нас есть только один разряд, для случаев, когда разрядов больше, чем один, 1+1=10 (или два в десятичной), что логично.
Тогда смотрите, что получается, мы выполняем сложения по разрядам справа налево:
1. 1+1=10, записываем ноль, а единица уходит в следующий разряд.
2. В следующем разряде получается 0+0+1=1 (эта единица пришла к нам из результата сложения на шаге 1).
4. Тут у нас есть единица только у второго числа, но сюда еще перенеслась, поэтому 0+1+1 = 10.
5. Склеиваем всё воедино:10|0|1|0.
Если лень в столбик, то давайте считать так: 101011+11011 или 43 + 27 = 70. Как тут можно поступить, а давайте смотреть, ведь нам никто не запрещает делать преобразования, а от перемены мест слагаемых сумма не меняется, для двоичной системы счисления это правило также актуально.
Можете проверить калькулятором, 1000110 в двоичной системе счисления это 70 в десятичной.
Сразу пример для вычитания одноразрядных чисел в двоичной системе счисления , про отрицательные числа мы не говорили, поэтому 0-1 не берем в расчет: 1 – 0 = 1; 0 – 0 = 0; 1 – 1 = 0. Если разрядов больше чем один, то тоже все просто, даже никаких столбиков и ухищрений не нужно: 110111 – 1000, это то же самое, что и 55 – 8. В результате мы получим 101111. И биться сердце перестало, откуда единица в третьем разряде (нумерация слева направо и начинается с нуля)? Да всё просто! Во втором разряде числа 110111 стоит 0, а в первом разряде стоит 1 (если примем, что нумерация разрядов начинается с 0 и идет слева направо), но единица четвертого разряда получается путем сложения двух единиц третьего разряда (получается этакая виртуальная двойка) и от этой двойки мы отнимаем единицу, которая стоит в нулевом разряде числа 1000, ну а 2 — 1 = 1, ну а 1 является допустимой цифрой в двоичной системе счисления.
Нам осталось рассмотреть умножение двоичных чисел, которое реализует за счет сдвига на один разряд влево . Но для начала давайте посмотрим на результаты одноразрядного умножения: 1*1 = 1; 1*0=0 0*0=0. Собственно, всё просто, теперь давайте посмотрим на что-нибудь более сложное. Возьмем числа 101001 (41) и 1100 (12). Умножать будем столбиком.
Если из таблицы непонятно как так получилось, то попробую объяснить словами:
В общем-то, операция умножения не такая уж и сложная, нужно лишь немного попрактиковаться.
В булевой алгебре есть два очень важных понятия: true (истина) и false (ложь), эквивалентом для них служат ноль и единица в двоичной системе счисления. Операторы булевой алгебры расширяют количество доступных операторов над этими значениями, давайте на них посмотрим.
Операция «Логическое И» или AND эквивалентно умножению одноразрядных двоичных чисел.
1 AND 1 = 1; 1 AND 0 = 1; 0 AND 0 = 0; 0 AND 1 = 0.
1 AND 1 = 1 ; 1 AND 0 = 1 ; 0 AND 0 = 0 ; 0 AND 1 = 0. |
Единица в результате «Логического И» будет только в том случае, если оба значения равны единицы, во всех остальных случаях будет ноль.
Операция «Логическое ИЛИ» или OR работает по следующему принципу: если хотя бы одно значение равно единице, то в результате будет единица.
1 OR 1 = 1; 1 OR 0 = 1; 0 OR 1 = 1; 0 OR 0 = 0.
1 OR 1 = 1 ; 1 OR 0 = 1 ; 0 OR 1 = 1 ; 0 OR 0 = 0. |
Операция «Исключающее ИЛИ» или XOR даст нам в результате единицу только в том случае, если один из операндов равен единице, а второй равен нулю. Если оба операнда равны нулю, будет ноль и даже если оба операнда равны единице, в результате получится ноль.