Типы данных
На самом низком уровне программирования, процессор работает только с машинными инструкциями по типу «возьми число по адресу А, сложи его с числом по адресу Б и помести результат в адрес С». На этом уровне нет типов данных, а следовательно процессор работает только с числами (да, символы тоже преобразуются в числа) и самое важное здесь их длинна.
- 1 бит — это минимальная единица измерения информации.
- 1 байт содержит 8 бит — это является минимальной адресуемой единицей хранения информации в памяти компьютера, чтобы к нему можно было обратиться и достать из памяти.
Число в памяти, в зависимости от своего размера, может занимать 1 или более байт.
Чтобы обратиться к числу в памяти, надо знать адрес его первого байта и длинну этого числа в байтах (все остальные байты этого числа храняться последовательно и считаются автоматически). При этом можно обратиться не ко всему числу, а к отдельным его байтам, указав адрес нужного байта в составе этого числа.
Количество байт для хранения числа можно увеличивать только путем удваивания. Т.е. если вам не хватает 4 байт для хранения, то вы используете 8 байт, потом 16 байт и т.д.. При этом те байты которые не используются для хранения информации заполняются нулями. Такая порционность связана с особенностями работы процессора.
Для удобства работы с числами в памяти компьютера — для высокоуровневых языков программирования придумали типы данных.
Побитовые операции
Побитовые операция в Python, Java, С++ и других языках
Операция | Назначение |
---|---|
a & b | Побитовое И для a и b
Используется для выключения битов. Любой бит со значением 0 выключает бит. Пример: 11001010 & 11100010 -------- 11000010 |
a | b | Побитовое ИЛИ для a и b
11001010 | 11100010 -------- 11101010 |
a ^ b | Исключающее ИЛИ для a и b
11001010 ^ 11100010 -------- 00101000 |
~a | Инверсия битов для a
~11001010 -------- 00110101 |
a << b | Побитовый сдвиг влево для a на b
|
a >> b | Побитовый сдвиг вправо для a на b
|
Переводы из одной системы счисления в другую (пример на Python)
Перевод из 10-ричной системы счисления
- hex() — в 16-ричную систему
- oct() — в 8-ричную систему
- bin() — в 2-ичную систему
Перевод в 10-ричную систему счисления из любой другой
int(number, base)
где number это ваше число, а base это указание системы счисления из которой вы переводите (может принимать значения: 2, 8, 16).