ПОЖАЛУЙСТА ПОМОГИТЕ С ЗАДАЧЕ ПО ИНФОРМАТИКЕ В некоторой базе данных хранятся...

0 голосов
68 просмотров

ПОЖАЛУЙСТА ПОМОГИТЕ С ЗАДАЧЕ ПО ИНФОРМАТИКЕ
В некоторой базе данных хранятся записи,содержащие информацию о некоторых датах. Каждая запись содержит три поля:номер года (число от 1 до 2100), номер месяца (число от 1 до 12) и номер дня в месяце (число от 1 до 31). Каждое поле записывается отдельно от других полей с использованием минимально возможного количества бит.Определите минимальное кол-во бит,необходимое для кодирования одной записи.пожалуйста напишите решение реал очень надо, заранее спасибо.


Информатика (33 баллов) | 68 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Все решается через степени двойки.
1. Номер года. Число от 1 до 2100. Можно перевести 2100 в двоичную систему и посмотреть, сколько бит оно займет. Но это долго. Ведь можно просто вспомнить, что 1 Кбайт - это 1024 байта или 2 в десятой степени.
2 в одиннадцатой 2048 (удваиваем), 2 в двенадцатой - 4096. Наш диапазон дат укладывается в интервал между 2048 и 4096, поэтому нам потребуется 12 бит.
2. Номер месяца - их 12. У нас есть 2 в четвертой - это 16, и два в кубе - только 8. Поэтому еще 4 бита запасаем на месяц.
3. Номер дня - максимальный 31. Мы знаем, что 2 в пятой степени равно 32, значит 5 бит будет достаточно. Всего нам потребуется 12+4+5=21 бит.

Ответ: 21 бит. 

(142k баллов)