Оглавление

Computer Science

Глоссарий

Двоичная система счисления

Форматы данных

Строки

Графика

Как хранятся данные в Python

Computer Science

Глоссарий

Информация — это понятные нам сведения, описывающие положение вещей и какую-то систему. Еще говорят, что информация должна уменьшать неопределенность. Важно, что информация — это не данные.

Данные — представление информации в каком-то формате. Формат должен быть таким, чтобы данные можно было декодировать, интерпретировать и обработать. Формат данных не обязательно должен быть понятен человеку.

Бит — единица измерения информации в двоичной системе счисления, физически соответствует одной ячейке оперативной памяти (или постоянной памяти).

Байт («один кусь», от bite — кусать) — тоже единица измерения, равная 8 бит, может кодировать одно из 256 различных значений. Физически это минимально независимо адресуемый набор данных (можно взять 1 байт, но нельзя взять один бит).

Оперативная память (также «память с произвольным доступом») — часть памяти, в которой хранится выполняемый машинный код, входные, выходные и промежуточные данные.

Конденсатор/триггер — электрический элемент, обеспечивающий в микросхеме физическое хранение одного бита.

Двоичная система счисления

Формат данных (!), при котором в разряде может быть только 1 или 0. Каждый следующий разряд кодирует вдвое большее число (не в 10 раз, как в десятичной системе).

Форматы данных

Целые положительные числа

Хранятся в 1–4 байтах, в двоичной форме, все 8 бит байта используются для записи числа.

Целые отрицательные числа Хранятся в 2–4 байтах, в двоичной форме, один бит отводится под знак. У отрицательных чисел кодирование идет от наименьшего возможного до наибольшего.

Дробные числа — мантисса и показатель

Запись дробного числа в виде суммы дробей типа 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ... к которой прибавляется единица, затем такая дробь возводится в степень.

Строки

Мы берем каждое значение и нумеруем ими символы, это нам понадобится, чтобы сделать алфавит со строк. Нам нужны будут латинские буквы, большие, маленькие, знаки препинания, перенос строки, пробел и еще другие бесполезные символы.

Результат, который у нас получится — это таблица кодировок.

Некоторые кодировки содержат переменное количество символов. Если символ попадает в первую часть таблицы до 128, он кодируется одним байтом, то есть условно буква H или буква М и всё, а если символ находится дальше, он может создавать любое количество байт от 2 до 4. Всевозможные непечатаемые символы, в том числе emoji, и все языки мира могут содержаться в одной кодировке UTF-8 или UTF-16 (Unicode Transformation Format). Это стандарт Unicode, который как раз таки и был создан, чтобы устранить многочисленные таблицы кодировок и чтобы все могли читать то, что пишут другие.


                    
#Получить код для символа:
print(ord("P"), ord("y"), ord("t"), ord("h"), ord("o"), ord("n"))
                

                    
#Получить символ по коду:
print(chr(80), chr(121), chr(116), chr(93), chr(104), chr(111), chr(110))
                

Графика

Когда мы хотим закодировать черно-белую графику, то кодируем каждую точку одним байтом (где цвета у нас 0 — черный, 255 — белый). В начале файла просто отведено некоторое количество байт под то, чтобы указать, какая ширина изображения.

Когда у нас цветной монитор, каждый пиксель монитора состоит из трех маленьких светящихся элементов. И мы управляем свечением уже не пикселя, а каждой лампочки в пикселе,  задавая значения от 0 до 255. Если у нас полностью светятся все зеленые точки, а остальные молчат, то получается зеленый цвет.

Если у нас светится зеленый и красный, то получается желтый. Если светится красный и синий, то получается маджента. Если светятся все, то получается белый. А если никакой не светится, то получается черный. Если под каждый цвет нам нужно 3 байта, то под все цвета — 24 бита. Такие дела!

Как хранятся данные в Python

При создании переменной или значения в Python данные размещаются в оперативной памяти. Адрес размещения переменной можно получить, если вызвать функцию id()

Как хранятся списки и словари в Python


                    
print(id(10))
>> 94041877179168

print(id(5+5))
>>94041877179168

a = 10
print(id(a))
>> 94041877179168
                

В оперативной памяти Python хранит последовательность ссылок на данные — таких же ссылок, в которых Python хранит значения.


                    
a = 5
b = 10
c = "a"

mylist = [a, b, c]

print(id(mylist[1]))
                
© 2023 Все права защищены