Допустим, у нас есть сообщение «habr», которое необходимо передать без ошибок. Для этого сначала нужно наше сообщение закодировать при Кода Хэмминга. Нам необходимо представить его в бинарном виде.На этом этапе стоит определиться с, так называемой, длиной информационного слова, то есть длиной строки из нулей и единиц, которые мы будем кодировать. Допустим, у нас длина слова будет равна 16. Таким образом, нам необходимо разделить наше исходное сообщение («habr») на блоки по 16 бит, которые мы будем потом кодировать отдельно друг от друга. Так как один символ занимает в памяти 8 бит, то в одно кодируемое слово помещается ровно два ASCII символа. Итак, мы получили две бинарные строки по 16 битбит. распараллеливается, и две части сообщения («ha» и «br») кодируются независимо друг от друга. Рассмотрим, как это делается на примере первой части.
Прежде всего, необходимо вставить контрольные биты. Они вставляются в строго определённых местах — это позиции с номерами, равными степеням двойки. В нашем случае (при длине информационного слова в 16 бит) это будут позиции 1, 2, 4, 8, 16. Соответственно, у нас получилось 5 контрольных бит (выделены красным цветом)Таким образом, длина всего сообщения увеличилась на 5 бит. До вычисления самих контрольных бит, мы присвоили им значение «0».
В алгебре логики различают три вида логических операций:
Конъюкция - это логическое умножение, обозначается &, ^, И
Дизъюнкция - это логическое сложение, обозначается ∨, I, ИЛИ, +
Инверсия - это логическое отрицание(т.е., если у нас 0, то с инверсии у нас получится 1), обозначаем ее как HE, ¬, -
Логические операции имеют свой порядок: сначала инверсия, потом конъюкция, потом дизъюнкция.
Давай подсчитаем количество переменных в логическом выражении: это A, B, C, т.е., 3 переменные. Подсчитаем количество действий в этом выражении: 5 действий.
Сложим кол-во действий и кол-во переменных и получим количество столбцов в таблице.
3 + 5 = 8 столбцов.
Теперь определим количество строк в таблице. Для этого воспользуемся формулой m = 2^n.
m = 2^3 = 8 строк в таблице, не считая шапки таблицы.
Чертим таблицу:
A B C A ^ B B ^ C A ^ C A^B∨B B^C∨A
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
1 1 0 1 0 0 1 1
1 0 1 0 0 1 0 1
0 1 1 0 1 0 1 1
1 1 1 1 1 1 1 1
Расставим порядок действий: первым действием у нас будет A ^ B, так как конъюкция первее дизъюнкции.
Вторым действием будет B ^ C по выше сказанной причине.
Третьим действием будет A ^ C
Четвертым действием A ^ B ∨ B
Пятым действием будет B ^ C ∨ A
В таблице будет только две цифры - 0 и 1. В первых трех действиях конъюкция(лог.умножение), т.е. мы будем умножать 0 и 1. В последних двух действиях - конъюкция с дизъюнкцией, т.е. сначала будем умножать B на C и прибавлять к A. (Если алгебру знаешь - справишься).
Задача решена.
P.S Если у всех троих переменных 0 - то во всех логических действиях у них будет результат, равный нулю. Тоже самое и с ситуацией, когда все три переменные равны 1.
Объяснение:
Допустим, у нас есть сообщение «habr», которое необходимо передать без ошибок. Для этого сначала нужно наше сообщение закодировать при Кода Хэмминга. Нам необходимо представить его в бинарном виде.На этом этапе стоит определиться с, так называемой, длиной информационного слова, то есть длиной строки из нулей и единиц, которые мы будем кодировать. Допустим, у нас длина слова будет равна 16. Таким образом, нам необходимо разделить наше исходное сообщение («habr») на блоки по 16 бит, которые мы будем потом кодировать отдельно друг от друга. Так как один символ занимает в памяти 8 бит, то в одно кодируемое слово помещается ровно два ASCII символа. Итак, мы получили две бинарные строки по 16 битбит. распараллеливается, и две части сообщения («ha» и «br») кодируются независимо друг от друга. Рассмотрим, как это делается на примере первой части.
Прежде всего, необходимо вставить контрольные биты. Они вставляются в строго определённых местах — это позиции с номерами, равными степеням двойки. В нашем случае (при длине информационного слова в 16 бит) это будут позиции 1, 2, 4, 8, 16. Соответственно, у нас получилось 5 контрольных бит (выделены красным цветом)Таким образом, длина всего сообщения увеличилась на 5 бит. До вычисления самих контрольных бит, мы присвоили им значение «0».
Объяснение:
A ^ B ∨ B ^ C ∨ A ^ C
В алгебре логики различают три вида логических операций:
Конъюкция - это логическое умножение, обозначается &, ^, И
Дизъюнкция - это логическое сложение, обозначается ∨, I, ИЛИ, +
Инверсия - это логическое отрицание(т.е., если у нас 0, то с инверсии у нас получится 1), обозначаем ее как HE, ¬, -
Логические операции имеют свой порядок: сначала инверсия, потом конъюкция, потом дизъюнкция.
Давай подсчитаем количество переменных в логическом выражении: это A, B, C, т.е., 3 переменные. Подсчитаем количество действий в этом выражении: 5 действий.
Сложим кол-во действий и кол-во переменных и получим количество столбцов в таблице.
3 + 5 = 8 столбцов.
Теперь определим количество строк в таблице. Для этого воспользуемся формулой m = 2^n.
m = 2^3 = 8 строк в таблице, не считая шапки таблицы.
Чертим таблицу:
A B C A ^ B B ^ C A ^ C A^B∨B B^C∨A
0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 1 0 0 0 0 1 0
1 0 0 0 0 0 0 1
1 1 0 1 0 0 1 1
1 0 1 0 0 1 0 1
0 1 1 0 1 0 1 1
1 1 1 1 1 1 1 1
Расставим порядок действий: первым действием у нас будет A ^ B, так как конъюкция первее дизъюнкции.
Вторым действием будет B ^ C по выше сказанной причине.
Третьим действием будет A ^ C
Четвертым действием A ^ B ∨ B
Пятым действием будет B ^ C ∨ A
В таблице будет только две цифры - 0 и 1. В первых трех действиях конъюкция(лог.умножение), т.е. мы будем умножать 0 и 1. В последних двух действиях - конъюкция с дизъюнкцией, т.е. сначала будем умножать B на C и прибавлять к A. (Если алгебру знаешь - справишься).
Задача решена.
P.S Если у всех троих переменных 0 - то во всех логических действиях у них будет результат, равный нулю. Тоже самое и с ситуацией, когда все три переменные равны 1.