Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Информатика. Python. Задание на метод Хемминга и биты

Алина Чекаева Ученик (207), на голосовании 1 месяц назад
а) Пусть от источника к приемнику передают N информационных бит с контролем по паритету.
Определите передаваемый блок информации, рассчитав контрольный бит и проверив расчеты, используя программу Python. Представьте скриншоты листинга программы и результатов ее работы.
б) Определите контрольные и информационные биты в сообщении методом Хемминга. Проверьте расчеты, используя программу на Python. Представьте скриншоты листинга программы и результатов ее работы.
Данные для задания:
Сообщение в двоичном коде: А=10110110111001
Вид паритета: нечетность
Голосование за лучший ответ
speexz Мыслитель (7478) 2 месяца назад
а) Для того чтобы решить эту задачу, мы можем создать программу на Python, которая будет принимать N информационных бит и вычислять контрольный бит для проверки четности (паритета). Мы будем использовать четность по принципу: если количество единичных битов в информационном блоке четное, контрольный бит должен быть равен 0, если нечетное — 1.

### Шаги:
1. Ввести N информационных бит.
2. Рассчитать контрольный бит.
3. Вывести блок данных с контрольным битом.
4. Программа должна проверять правильность контрольного бита.

### Пример реализации программы на Python:
 def calculate_parity_bit(info_bits):  

# Подсчитываем количество единичных битов

ones_count = sum(info_bits)

# Если количество единичных битов нечетное, контрольный бит = 1, если четное - 0

return ones_count % 2



def main():

# Ввод N битов

N = int(input("Введите количество информационных бит: "))

info_bits = []



print("Введите информационные биты:")

for i in range(N):

bit = int(input(f"Бит {i + 1}: "))

if bit not in (0, 1):

print("Ошибка: вводите только 0 или 1.")

return

info_bits.append(bit)



# Рассчитываем контрольный бит

parity_bit = calculate_parity_bit(info_bits)



# Создаем полный блок с контрольным битом

transmitted_block = info_bits + [parity_bit]



# Выводим блок данных с контрольным битом

print(f"Передаваемый блок данных (с учетом контрольного бита): {transmitted_block}")



# Проверяем правильность паритета

print(f"Контрольный бит: {parity_bit}")

if calculate_parity_bit(transmitted_block) == 0:

print("Контрольный бит правильный.")

else:

print("Ошибка в передаче данных, контрольный бит не совпадает.")



if __name__ == "__main__":

main()



### Описание программы:
- Программа запрашивает у пользователя количество информационных бит (N) и сами биты.
- Для каждого бита программа проверяет, что вводится только 0 или 1.
- Рассчитывается контрольный бит на основе четности количества единичных битов.
- Контрольный бит добавляется к информационному блоку и выводится результат.
- Затем программа проверяет, правильный ли контрольный бит был рассчитан (проверяя четность всего блока).

### Пример выполнения программы:
 Введите количество информационных бит: 4  

Введите информационные биты:

Бит 1: 1

Бит 2: 0

Бит 3: 1

Бит 4: 1

Передаваемый блок данных (с учетом контрольного бита): [1, 0, 1, 1, 1]

Контрольный бит: 1

Контрольный бит правильный.


В этом примере у нас 4 информационных бита: [1, 0, 1, 1]. Количество единичных битов — 3, что нечетное, поэтому контрольный бит равен 1. После добавления контрольного бита получаем передаваемый блок данных: [1, 0, 1, 1, 1].

Теперь можно сделать скриншоты листинга программы и результатов ее работы.
Похожие вопросы