Двоичная система счисления, 0 и 1, двоичные числа
Содержание:
- Общая форма записи двоичных чисел
- Правила сложения двоичных чисел
- Вычитание методом заимствования
- Вычитание методом дополнения
- Правила умножения двоичных чисел
Вспомним материал по системам счисления. В нём говорилось, что наиболее удобной системой счисления для компьютерных систем является двоичная система. Дадим определение этой системе:
Двоичной системой счисления называется позиционная система счисления, у которой основанием является число 2.
Для записи любого числа в двоичной системе счисления используются всего лишь 2 цифры: 0 и 1.
Общая форма записи двоичных чисел
Для целых двоичных чисел можно записать:
..+a0⋅20Данная форма записи числа «подсказывает» правило перевода натуральных двоичных чисел в десятичную систему счисления: требуется вычислить сумму степеней двойки, соответствующих единицам в свёрнутой форме записи двоичного числа.
Правила сложения двоичных чисел
Основные правила сложения однобитовых чисел
0+0=0
0+1=1
1+0=1
1+1=10
Отсюда видно, что и, как и в десятичной системе счисления, числа, представленные в двоичной системе счисления, складывают поразрядно. Если разряд переполняется, единица переносится в следующий разряд.
Пример сложения двоичных чисел
Правила вычитания двоичных чисел
0-0=0
1-0=0
10-1=1
Но как быть с 0-1=? Вычитание двоичных чисел немного отличается от вычитания десятичных чисел. Для этого используется несколько способов.
Вычитание методом заимствования
Запишите двоичные числа друг под другом – меньшее число под большим.
Если меньшее число имеет меньше цифр, выровняйте его по правому краю (так, как вы записываете десятичные числа при их вычитании).
Некоторые задачи на вычитание двоичных чисел ничем не отличаются от вычитания десятичных чисел. Запишите числа друг под другом и, начиная справа, найдите результат вычитания каждой пары чисел.
Вот несколько простых примеров:
1 — 0 = 1
11 — 10 = 1
1011 — 10 = 1001
Рассмотрим более сложную задачу. Вы должны запомнить только одно правило, чтобы решать задачи на вычитание двоичных чисел. Это правило описывает заимствование цифры слева, чтобы вы могли вычесть 1 из 0 (0 — 1).
В первом столбце справа вы получаете разность 0 — 1. Для ее вычисления необходимо позаимствовать цифру слева (из разряда десятков).
Во-первых, зачеркните 1 и замените ее на 0, чтобы получить такую задачу: 1010 — 101 = ?
Вы вычли («позаимствовали») 10 из первого числа, поэтому вы можете написать это число вместо цифры, стоящей справа (в разряд единиц).
101100 — 101 = ?
Вычтите цифры в правом столбце. В нашем примере:
Правый столбец: 10 — 1 = 1.
102 = (1 x 2) + (0 x 1) = 210 (цифры нижнего регистра обозначают систему счисления, в которой записаны числа).
Таким образом, в десятичной системе эта разность записывается в виде: 2 — 1 = 1.
Вычтите цифры в оставшихся столбцах. Теперь это легко сделать (работайте со столбцами, двигаясь, справа налево):
Вычитание методом дополнения
Запишите двоичные числа друг под другом так, как вы записываете десятичные числа при их вычитании. Этот метод используется компьютерами для вычитания двоичных чисел, так как он основан на более эффективном алгоритме.
Однако простому человеку, привыкшему вычитать десятичные числа, этот метод может показаться более сложным (если вы программист, обязательно познакомьтесь с этим методом вычитания двоичных чисел).
Рассмотрим пример: 1011002 — 111012= ?
Если значность чисел разная, к числу с меньшей значностью слева припишите соответствующее количество 0.
В вычитаемом числе поменяйте цифры: каждую 1 поменяйте на 0, а каждый 0 на 1.
0111012 → 1000102.
На самом деле мы «забираем дополнение у единицы», то есть вычитаем каждую цифру из 1. Это работает в двоичной системе, так как у такой «замены» может быть только два возможных результата: 1 — 0 = 1 и 1 — 1 = 0.
К полученному вычитаемому прибавьте единицу.
Теперь вместо вычитания сложите два двоичных числа.
Проверьте ответ.
Быстрый способ – откройте двоичный онлайн калькулятор и введите в него вашу задачу. Два других метода подразумевают проверку ответа вручную.
1) Переведем числа в двоичную систему счисления:
Допустим, что из числа 1011012 нужно вычесть 110112
2) Обозначим как A число 1011012 и как B число 110112.
3) Запишем числа A и B столбиком, одно под другим, начиная с младших разрядов (нумерация разрядов начинается с нуля).
|
Разр. |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
A |
1 |
0 |
1 |
1 |
0 |
1 |
|
|
B |
1 |
1 |
0 |
1 |
1 |
4) Вычтем разряд за разрядом из числа A число B записывая результат в C начиная с младших разрядов.
Правила поразрядного вычитания, для двоичной системы счисления представлены в таблице ниже.
|
Заем |
Ai |
Bi |
Ci |
Заем |
|
|
0 |
0 |
0 |
|
|
|
0 |
1 |
1 |
1 |
|
|
1 |
0 |
1 |
|
|
|
1 |
1 |
0 |
|
|
1 |
0 |
0 |
1 |
1 |
|
1 |
0 |
1 |
0 |
1 |
|
1 |
1 |
0 |
0 |
|
|
1 |
1 |
1 |
1 |
1 |
Весь процесс сложения наших чисел выглядит следующим образом:
(красным шрифтом показаны заёмы из соответствующего разряда)
Получилось 1011012 — 110112 = 100102
или в десятичной системе счисления: 4510 — 2710 = 1810
Правила умножения двоичных чисел.

В целом эти правила очень просты и понятны.
0*0=0
0*1=0
1*0=0
1*1=1
Умножение многоразрядных двоичных чисел происходит точно также как и обычных. Каждое значащий разряд умножаем на верхнее число по приведенным правилам, соблюдая позиции. Умножать просто — так как умножение на единицу даёт одно и тоже число.
|
× |
1 |
1 |
1 |
0 |
|||
|
1 |
0 |
1 |
|||||
|
+ |
1 |
1 |
1 |
0 |
|||
|
1 |
1 |
1 |
0 |
||||
|
1 |
0 |
0 |
0 |
1 |
1 |
0 |
|
Система счисления Методы перевода десятичного числа в двоичное
Доказательство того, что 1 = 0 с использованием распространенной логической ошибки — мысли с красной планеты
Среда, 17 марта 2010 г.
Математика
Некоторое время назад я прочитал сообщение Дэниела Левина, в котором показано формальное доказательство того, что x*0 = 0. Вот перепечатка доказательства:
- y = y (аксиома тождества)
- у — у = 0 (арифметическое)
- х*(у — у) = 0 (подстановка)
- x*y — x*y = 0 (дистрибутив)
- х*у = х*у (арифметическое)
Логика этого доказательства состоит в том, что, поскольку мы можем свести x*0 = 0 к аксиоме тождества, x*0 = 0 верно. К сожалению, это нелогично.
Я не хочу придираться к Дэниелу Левину. Он очень умный парень. Я сделал ту же ошибку, и только когда я несколько раз терял баллы за наборы задач, я действительно понял ошибочность этой логики.
- 1 = 0 (гипотеза)
- 0 * 1 = 0 * 0 (умножение каждой стороны на одно и то же число сохраняет равенство)
- 0 = 0 (арифметическое)
Согласно логике предыдущего доказательства, мы сократили 1 = 0 до 0 = 0, известного истинного утверждения, поэтому 1 = 0 истинно.
Очевидно, это неправильно.
На самом деле мы показали, что 1 = 0 подразумевает 0 = 0. Вы могли бы записать это формально как:
(1 = 0) -> (0 = 0)
Давайте быстро отклонимся, чтобы обсудить оператор импликации. Оператор импликации — забавное существо. Если показать, что A -> B истинно, это не означает, что либо A, либо B сами по себе истинны. Вместо этого он показывает, что допустима одна из следующих комбинаций A и B:
| A | B |
|---|---|
| ложный | ложь |
| ложный | правда |
| правда | правда |
Единственная отсутствующая комбинация — истина -> ложь, поскольку истинное никогда не может подразумевать ложное.
Как вы можете видеть выше, когда B истинно, A может быть либо истинным, либо ложным.
Однако, когда A истинно, B должно быть истинным. Итак, если вы можете показать, что A -> B истинно, а также показать, что A истинно, вы можете комбинировать A и A -> B, чтобы показать, что B истинно. В формальной логике это называется modus ponens.
Назад к 1 = 0. Мы показали, что (1 = 0) -> (0 = 0), и мы знаем, что 0 = 0 верно. Как мы только что видели, это ничего не говорит о истинности 1 = 0, и наше доказательство неверно. Точно так же доказательство x*0 = 0 только что показало, что (x*0 = 0) ->
Есть простое решение к доказательству с использованием доказательство от противного .
Доказательство от противного использует тот факт, что A -> B и ~B -> ~A («~» означает «логическое отрицание») логически эквивалентны. Мы можем увидеть это, выписав все комбинации переменных:
| А | В | А -> В | ~В -> ~А | верно? |
|---|---|---|---|---|
| ложный | ложь | ложь -> ложь | правда -> правда | правда |
| ложный | правда | ложь -> истина | ложь -> истина | правда |
| правда | ложь | истина -> ложь | истина -> ложь | ложь |
| правда | правда | правда -> правда | ложь -> ложь | правда |
В доказательстве от противного мы можем доказать истинность B, доказав следующие две вещи:
- ~B -> ~A
- А
Доказывая ~B -> ~A, мы также доказываем A -> B из-за логической эквивалентности.
Доказав истинность А, мы можем объединить А с А -> В, используя modus ponens, чтобы доказать, что В истинно. Этот метод называется «доказательство от противного», потому что, предполагая, что ~B истинно, мы можем показать, что и A, и ~A истинны, что является логическим противоречием.
Давайте воспользуемся доказательством от противного, чтобы исправить доказательство x*0 = 0.
- Предположим, что x*0 != 0
- у = у (идентичность)
- у — у = 0 (арифметическое)
- х*(у — у) != 0 (подстановка)
- x*y — x*y != 0 (дистрибутив)
- x*y != x*y (противоречие аксиомы тождества)
- х*0 = 0 (от противного)
Всего несколько изменений, но теперь логика верна.
Давайте посмотрим, что произойдет, если мы попытаемся использовать доказательство от противного, чтобы доказать, что 1 = 0:
- Допустим 1 != 0
- 0 * 1 != 0 * 0
Доказательство сразу не работает. Умножение каждой части уравнения на одну и ту же величину сохранит соотношение равенства, но не обязательно сохранит отношение неравенства .
Вы можете подумать: «Это хорошо, но чем все это полезно??». За последние два года мне пришлось провести формальное доказательство только один раз, но доказательство было для алгоритма, правильность которого была абсолютно критична для моей компании. Однако в более общем плане я нахожу строгий, дисциплинированный подход к размышлению о проблемах действительно ценным.
Вы должны подписаться на меня в Твиттере здесь.
единица равна нулю
| Учитывая, что a и b — целые числа, такие что a = b + 1, | Докажите: 1 = 0 |
|---|---|
| 1. а = б + 1 | 1. Дано |
| 2. (а-б)а = (а-б)(б+1) | 2. Пропорция умножения = |
3. а 2 — аб = аб + а — б 2 — б | 3. Распределительная собственность |
| 4. а 2 — аб -а = аб + а -а — б 2 — б | 4. Пропорция вычитания = |
| 5. а(а — b — 1) = b(а — b — 1) | 5. Распределительная собственность |
| 6. а = б | 6. Раздел имущества = |
| 7. б + 1 = б | 7. Переходное свойство = (шаги 1, 7) |
| 8. Следовательно, 1 = 0 | 8. Пропорция вычитания = |
Доказательство того, что ноль равен двум (с помощью алгебры)
| Учитывая, что a и b — целые числа, такие что a = b, | Докажите: 0 = 2 |
|---|---|
1. а = б | 1. Дано |
| 2. а — б — 2 = а — б — 2 | 2. Рефлексивное предложение = |
| 3. а(а — b — 2) = b(а — b — 2) | 3. Пропорция умножения = |
| 4. а 2 — аб — 2а = аб — б 2 — 2б | 4. Распределительная собственность |
| 5. а 2 — аб = аб — б 2 — 2б + 2а | 5. Свойство сложения = |
| 6. а 2 — аб = аб + 2а — б 2 — 2б | 6. Ассоциативное свойство + |
| 7. а(а — Ь) = а(Ь + 2) — Ь(Ь + 2) | 7. Распределительная собственность |
8.![]() |

а 2 — аб = аб + а — б 2 — б
а = б