- Что значит целое число битов
- Производные единицы измерения количества информации
- Методы измерения количества информации
- Алфавитный подход к измерению количества информации
- Вероятностный подход к измерению количества информации
- Задача 1.
- Задача 2.
- Задача 3.
- Задача 4.
- Задача 5.
- Задача 6.
- Задача 7.
- Задача 8.
- Бит | Байт | Системы счисления
- Десятичная система счисления
- Двоичная система счисления
- Бит и байт
- Преобразование десятичного числа в двоичное
- Второй способ
- Преобразование двоичного числа в десятичное
- Шестнадцатеричная система счисления
- Преобразование двоичного числа в шестнадцатеричное
- Другие системы счисления
Что значит целое число битов
Для информации существуют свои единицы измерения информации. Если рассматривать сообщения информации как последовательность знаков, то их можно представлять битами, а измерять в байтах, килобайтах, мегабайтах, гигабайтах, терабайтах и петабайтах.
Давайте разберемся с этим, ведь нам придется измерять объем памяти и быстродействие компьютера.
Единицей измерения количества информации является бит – это наименьшая (элементарная) единица.
Байт – основная единица измерения количества информации.
Байт – довольно мелкая единица измерения информации. Например, 1 символ – это 1 байт.
Производные единицы измерения количества информации
1 килобайт (Кб)=1024 байта =2 10 байтов
1 мегабайт (Мб)=1024 килобайта =2 10 килобайтов=2 20 байтов
1 гигабайт (Гб)=1024 мегабайта =2 10 мегабайтов=2 30 байтов
1 терабайт (Гб)=1024 гигабайта =2 10 гигабайтов=2 40 байтов
Запомните, приставка КИЛО в информатике – это не 1000, а 1024, то есть 2 10 .
Методы измерения количества информации
Итак, количество информации в 1 бит вдвое уменьшает неопределенность знаний. Связь же между количеством возможных событий N и количеством информации I определяется формулой Хартли:
Алфавитный подход к измерению количества информации
При этом подходе отвлекаются от содержания (смысла) информации и рассматривают ее как последовательность знаков определенной знаковой системы. Набор символов языка, т.е. его алфавит можно рассматривать как различные возможные события. Тогда, если считать, что появление символов в сообщении равновероятно, по формуле Хартли можно рассчитать, какое количество информации несет в себе каждый символ:
Вероятностный подход к измерению количества информации
Этот подход применяют, когда возможные события имеют различные вероятности реализации. В этом случае количество информации определяют по формуле Шеннона:
I – количество информации,
N – количество возможных событий,
Pi – вероятность i-го события.
Задача 1.
Шар находится в одной из четырех коробок. Сколько бит информации несет сообщение о том, в какой именно коробке находится шар.
Имеется 4 равновероятных события (N=4).
По формуле Хартли имеем: 4=2 i . Так как 2 2 =2 i , то i=2. Значит, это сообщение содержит 2 бита информации.
Задача 2.
Чему равен информационный объем одного символа русского языка?
В русском языке 32 буквы (буква ё обычно не используется), то есть количество событий будет равно 32. Найдем информационный объем одного символа. I=log2 N=log2 32=5 битов (2 5 =32).
Примечание. Если невозможно найти целую степень числа, то округление производится в большую сторону.
Задача 3.
Чему равен информационный объем одного символа английского языка?
Задача 4.
Световое табло состоит из лампочек, каждая из которых может находиться в одном из двух состояний (“включено” или “выключено”). Какое наименьшее количество лампочек должно находиться на табло, чтобы с его помощью можно было передать 50 различных сигналов?
С помощью N лампочек, каждая из которых может находиться в одном из двух состояний, можно закодировать 2 N сигналов.
2 5 6 , поэтому пяти лампочек недостаточно, а шести хватит. Значит, нужно 6 лампочек.
Задача 5.
Метеостанция ведет наблюдения за влажностью воздуха. Результатом одного измерения является целое число от 0 до 100, которое записывается при помощи минимально возможного количества битов. Станция сделала 80 измерений. Определите информационный объем результатов наблюдений.
В данном случае алфавитом является множество чисел от 0 до 100, всего 101 значение. Поэтому информационный объем результатов одного измерения I=log2101. Но это значение не будет целочисленным, поэтому заменим число 101 ближайшей к нему степенью двойки, большей, чем 101. это число 128=2 7 . Принимаем для одного измерения I=log2128=7 битов. Для 80 измерений общий информационный объем равен 80*7 = 560 битов = 70 байтов.
Задача 6.
Определите количество информации, которое будет получено после подбрасывания несимметричной 4-гранной пирамидки, если делают один бросок.
Пусть при бросании 4-гранной несимметричной пирамидки вероятности отдельных событий будут равны: p1=1/2, p2=1/4, p3=1/8, p4=1/8.
Тогда количество информации, которое будет получено после реализации одного из них, можно вычислить по формуле Шеннона:
I = -[1/2 * log2(1/2) + 1/4 * log2(1/4) + 1/8 * log(1/8) + 1/8 * log(1/8)] = 14/8 битов = 1,75 бита.
Задача 7.
В книге 100 страниц; на каждой странице — 20 строк, в каждой строке — 50 символов. Определите объем информации, содержащийся в книге.
Задача 8.
Оцените информационный объем следующего предложения:
Тяжело в ученье – легко в бою!
Так как каждый символ кодируется одним байтом, нам только нужно подсчитать количество символов, но при этом не забываем считать знаки препинания и пробелы. Всего получаем 30 символов. А это означает, что информационный объем данного сообщения составляет 30 байтов или 30 * 8 = 240 битов.
Источник
Бит | Байт | Системы счисления
Для полноты понимания работы микроконтроллера необходимо четко знать, что такое бит и байт, а также уметь применять различные системы счисления.
Основным вычислительным ядром любого микроконтроллера является микропроцессор. Именно он выполняет обработку команд или же кода, написанного программистом.
Упрощенно работу микропроцессора можно представить следующим образом. Сначала выполняется считывание данных из определенной ячейки памяти, далее выполняется их обработка и затем возвращение результата назад в ячейку памяти. Следовательно, для того, чтобы микропроцессор мог выполнять свои функции необходимо наличие памяти. Иначе ему неоткуда будет считывать данные, а затем некуда помещать результаты вычислений.
Давайте кратко рассмотрим алгоритм работы микропроцессора (МП) на примере сложения двух цифр.
- Сначала МП считывает значение одного числа по указанному адресу ячейки памяти.
- Далее он считывает другое значение из второй ячейки.
- Складывает оба значения.
- Возвращает их суму в ячейку памяти.
Вот такой монотонной работой занимаются микропроцессоры. Для выполнения одной команды ему необходимо выполнить четыре операции. Однако современные МП выполняют более 1 000 000 000 операций за одну секунду. Микроконтроллеры же выполняют более 1 000 000 операций, чего, как правило, предостаточно для такого крохотного устройства.
Данные, с которыми оперирует микропроцессор, представляют собой набор цифр. Поэтому нашей целью является рассмотреть, какие цифры, а точнее системы счисления “понимает” микроконтроллер.
Десятичная система счисления
Десятичная система счисления нам очень близка и понятна. Возникла она очень давно, когда у людей впервые возникал необходимость подсчета чего-либо, например количества дней или определённых событий. Поскольку в те давние времена не было каких-либо технических устройств, то люди использовали для счета пальцы рук. Загибая или разгибая пальцы можно получить десять комбинаций, что очень просто и наглядно.
Математически данная она состоит из десяти разных символов 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, поэтому она и называется десятичной. С помощью указанных символов легко отобразить любое число.
Основанием десятичной системы является 10. Когда при счете использованы все знаки от 0 до 9, то, чтобы продолжить дальнейший счет, необходимо вместо символа 9 поставить символ 0, т. е. обнулить предыдущее значение, а слева от нуля записать символ 1. И так можно продолжать счет до бесконечности, прибавляя слева от текущей позиции цифры последующую.
Каждая позиция цифры имеет свой вес. Наименьший вес имеет позиции, находящаяся в крайнем правом положении. По мере перемещения слева на право, вес позиции возрастает.
Например, число 2345 имеет 4 позиции. В крайней левой позиции отображаются единицы, в данном случае 5 единиц, а степень 10 имеет нулевое значение. Далее вес позиции увеличивается. Следующее значение, расположенное слева от предыдущего, уже содержит десятки, а 10 имеет степень 1, поэтому во второй позиции числа 2345 четыре десятка.
Далее перемещаемся по разрядам 2345 справа налево и увеличиваем степень 10 еще на одну единицу, т. е. имеем 10 2 . Соответственно получаем три сотни. И последняя цифра, она же первая по счету, если считать слева на право, имеет наибольший вес для, т. е. 10 3 , и поэтому имеем 2000. Чтобы получить окончательный результат, следует сложить количество значений цифр всех позиций.
Двоичная система счисления
Двоичная система счисления оперирует всего лишь двумя символами 0 и 1. Она повсеместно применяется в цифровой технике, поскольку очень удачно сочетается с двумя устойчивыми состояниями электрической цепей: включено и выключено либо есть сигнал и нет сигнала. Также нулем еще обозначают сигнал низкого уровня, а единицей – высокого.
Порядок записи двоичного числа полностью соответствует десятичному. Веса позиций также возрастают справа налево. Только основанием является 2, а не 10.
Чтобы отличать двоичную систему от десятичной в цифровой технике используют индекс 2 и 10 соответственно:
110110 – десятичное.
При написании кода программы для обозначения двоичного значения перед ним ставится префикс 0b, например 0b11010101. Если записывается десятичное, то перед ним ничего не ставится.
0b11010101 – двоичное;
11010101 – десятичное.
Бит и байт
Двоичная система счисления также используется при хранении и обработке информации.
Вся информация цифровых запоминающих устройств хранится в памяти. Память представляет собой набор ячеек.
Каждая ячейка содержит один бит данных. Бит – это единица измерения объема памяти. В одном бите можно запоминать максимум два значения: 0 – это одно значение, а 1 – второе.
Bit происходит от двух английских слов Binary Digit (двоичное число).
При работе с битами регистров микроконтроллера мы будем часто обращаться к таким понятиям, как старший и младший биты. Эти понятия строго регламентированы. В двоичной системе разряд, который имеет самую правую позицию, получил название младший значащий бит (МЗБ). В англоязычной литературе его называют Least Significant Bit (LSB). Именно с него начинается нумерация битов.
Наибольший вес имеет бит, находящийся в самой левой ячейке памяти. Его принято называть старший значащий бит (СЗБ) или Most Significant Bit – MSB.
Более емкой единицей информации является байт (byte). Он равен 8 битам, т. е. восемь элементарных ячеек памяти составляют один байт.
1 байт = 8 бит
В одном бите можно хранить только два разных значения или две комбинации. А в 1 байте можно хранить 256 различных комбинаций. Ровно столько же символов содержится в таблице кодировки ASCII. Но об этом в другой раз.
На практике пользуются большими значениями объёма памяти килобайтами, мегабайтами, гигабайтами и терабайтами.
1 килобайт (кБ) = 1024 байт
1 мегабайт (МБ) = 1024 кБ
1 гигабайт (ГБ) = 1024 МБ
1 терабайт (ТБ) = 1024 ГБ
Преобразование десятичного числа в двоичное
На практике программисты часто пользуются несколькими системами счисления. Поэтому следует научиться переводить числа из десятичной системы в двоичную. Здесь можно выделить два простых способа. Рассмотрим их по порядку.
Первый способ заключается в том, что десятичное число непрерывно делится на два. При этом учитывается полностью ли оно разделилось или с остатком. Если значение делится без остатка, как например 4/2 = ровно 2 или 6/2 = ровно 3, то записывается ноль, а если с остатком, как 3/2 или 5/2, то записывается единица.
Теперь давайте переведем число 125 в двоичную форму.
125/2 = 62 остаток 1
62/2 = 31 остаток 0
31/2 = 15 остаток 1
15/2 = 7 остаток 1
7/2 = 3 остаток 1
3/2 = 1 остаток 1
1/2 = 0 остаток 1
Получаем двоичное число 11111012
Я надеюсь здесь понятно, что если 1 разделить на 2, то математически ноль никак не получится, однако такой подход позволяет объяснить данный алгоритм.
Еще один пример.
84/2 = 42 остаток 0
42/2 = 21 остаток 0
21/2 = 10 остаток 1
10/2 = 5 остаток 0
5/2 = 2 остаток 1
2/2 = 1 остаток 0
1/2 = 0 остаток 1
Второй способ
Второй способ имеет такую идею. С изначального числа нужно вычесть число в степени два, которое будет меньше заданного значения. Для ускорения процесса преобразования воспользуемся следующей таблицей.
Давайте преобразуем 125.
Наибольшая степень числа 2 меньшая значения 125 равна 6, т.е. 2 6 . Два в шестой степени равно 64. В 6-й бит записываем единицу. Теперь от 125 отнимаем 64 и получаем 61. Ближайшая степень двойки является 5, т. е. число 32. Следовательно, 5-й бит также находится в единице. Отнимаем от 61 значение 32 и получаем 29. 4-й бит, который соответствует числу 16, также находится в единице. 29 – 16 = 13, поэтому и 3-й бит = 1. 13 – 8 = 5. Отсюда видно, что и второй бит находится в единице. Далее от 5 отнимаем 4 и получаем единицу. Поскольку 1-й бит равен двум (2 1 = 2), а два менее единицы, то в него записываем ноль. Нулевой бит равен одному (2 0 = 1), поэтому в него заносим единицу. В итоге получаем следующее двоичное число: 11111012.
Следует обратить особое внимание на то, что нумерация битов, во-первых, выполняется справа налево, а во-вторых начинается с нуля! Это несколько непривычно, поскольку в десятичной системе счисления счет принято начинать с единицы. Однако в цифровой технике счет всегда идет с нуля! К этому следует приучить себя заранее, так как при написании программ для микроконтроллеров мы все время будем начинать счет битов с нуля. В дальнейшем вы такому счету быстро привыкнете, поскольку и в техническом описании МК строго соблюдается данное правило.
Преобразование двоичного числа в десятичное
Преобразование двоичного числа в десятичное выполняется довольно просто. Для этого следует сложить десятичные веса всех двоичных разрядов, в которых имеются единицы. Биты, в которых записан ноль, пропускаются. В качестве примера возьмем такое значение: 10101101. Нулевой, второй, третий, пятый и седьмой биты имеют единицы. Получаем: 2 0 + 2 2 + 2 3 + 2 5 + 2 7 = 1 + 4 +8 + 32 + 128 = 173.
В таблицах, приведенных ниже, наглядно показано перевод чисел из двоичной в десятичную систему счисления.
Шестнадцатеричная система счисления
В программировании микроконтроллеров очень часто пользуются шестнадцатеричными числами. Данная система счисления имеет основание 16, соответственно и 16 различных символов. Первые десять символов 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 заимствованы из десятеричной системы. В качестве оставшихся шести символов применяются буквы A, B, C, D, E, F.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Высокая популярность шестнадцатеричной системы счисления поясняется тем, что при отображении одного и того же значения используется меньше разрядов по сравнению с десятичной системой и тем более с двоичной. Например, при отображении 100 используется три десятичных разряда 10010 или 7 двоичных разрядов 11001002 и только 2 шестнадцатеричных разряда 6416.
А если записать 1000000, то разница в количестве занимаемых разрядов буде еще более ощутима:
1 000 00010 = 1111 0100 0010 0100 00002 = F424016
Преобразование двоичного числа в шестнадцатеричное
Еще одним положительным свойством шестнадцатеричного числа является простота получение его из двоичного. Такое преобразование выполняется следующим образом: сначала двоичное число разбивается на группы по четыре быта или на полубайты, которые еще называют тетрадами. Если количество битов не кратно четырем, то их дополняют нулями. Далее следует сложить значение всех битов в каждом полубайте. Сумма каждого полубайта даст значение отдельной цифры шестнадцатеричного числа.
Другие системы счисления
В цифровой технике также применяется восьмеричная система счисления, но она не нашла применения в микроконтроллерах.
Теоретические можно получить бесконечное значение систем счисления: троичную, пятиричную и даже сторичную, т.е. с любым основанием. Однако практической необходимости в этом пока что нет.
Наиболее простой и быстрый способ преобразования чисел с одной системы счисления в другую – это применение встроенного в операционную систему калькулятора. Найти его можно следующим образом: Пуск – Все программы – Стандартные – Калькулятор.
Чтобы перейти в «нужный» режим следует кликнуть по вкладке Вид и выбрать Программист или нажать комбинацию клавиш Alt+3.
В открывшемся окне можно вводить двоичные, восьмеричные, шестнадцатеричные и десятичные числа, выбрав соответствующий режим. Кроме того можно выполнять различные математические операции между ними.
В дальнейшем, при написании кода программы мы часто будем обращаться к данному калькулятору. Кроме того, опытные программисты любят использовать шестнадцатеричные числа, а нам проще будет понять двоичный код, поэтому калькулятор в помощь)
Источник