Некоторая величина может принимать целые значения от 0 до 127. Сколько байт потребуется...

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

Некоторая величина может принимать целые значения от 0 до 127. Сколько байт потребуется для записи значения этой величины в двоичном ко- де?


Информатика (12 баллов) | 59 просмотров
Дан 1 ответ
0 голосов

Способ 1

Языки программирования

Я обращусь к низкоуровневому C++. У него нет типа byte, зато аналог ему - это unsigned char. Напишем простенькую программу:

  1. #include
  2. int main() {
  3.        std::cout << <strong>sizeof(unsigned char);
  4.        return 0;
  5. }

Выполним её и получим ответом число 1.

Что это и откуда оно взялось?

sizeof - это оператор, принимающий какой-то тип или переменную и возвращающий количество байт, занимаемое в памяти этой переменной. Грубо говоря - Вы просите швею измерить Вашу талию: даёте ей измерить себя, а в ответ получаете обхват талии. Отсюда и выходит ответ, что занимаемое место в памяти типом byte равняется 1 байту.

Способ 2

Более глубокое объяснение происхождения числа 1

Нам понадобится формула \tt\displaystyle N = 2^i, где N - это количество информации, а i - количество бит, отведённое на неё. У нас есть промежуток - это значения от 0 до 127. Всего значений получается 128. Если не верите - пересчитайте. Итак, подставим:

\tt\displaystyle 128 = 2^i\\\\128 = 2^7\implies i = 7

Мы получили количество бит, которое впритык занимает переменная в памяти. К радости, компьютеры устроены так, что память не делится на выделяемое переменной пространство (не создаются ячейки по 7 бит, 9 бит, 11 бит и так далее). Если программа выделила под переменную 7 бит, то компьютер выделит 2³ бит (8 бит ⇒ 1 байт), в котором переменная будет хорошо себя чувствовать и не тесниться. Приведу ещё пример для ясности:

Если переменная занимает 122 бита (это фантастика, но для примера сойдёт), то выделится 2⁷, поскольку:

2⁶ < 122 < 2⁷. Почему не 2⁶? Было бы смешно, если переменная, которая занимает 122 бит, занимала бы ячейку памяти в 64 бит. Это то же самое, если бы Вы поместили слона в коробку из-под спичек. Почему не 2⁸ или, например, не 2⁹⁹⁹⁹⁹⁹? А зачем компьютеру выделять такое пространство, если можно выделить наименьшее и быть в плюсе? Это то же самое, если бы Вы выделили для муравья десятиэтажный дом.

Ответ

1 байт

(5.6k баллов)