Files
knowledge_vault/Языки программирования/Представление чисел в памяти компьютера.md
2026-05-02 21:35:16 +05:00

54 lines
3.8 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Компьютер воспринимает все данные в виде [двоичного кода](двоичный%20код), в том числе из цифры
## Представление целых чисел
#### 1. Натуральные числа (unsignet)
Диапазон значений:
$N=\begin{cases}N\geqslant0\\ N<2^N\end{cases}$ - где N число бит. $2^N-1$ - Максимальное число
`Пример: 13 в 8 битной системе, это - 1101`
#### 2. Целые числа (signet)
Есть три системы представления отрицательных чисел:
1. Прямой код (sign-magnitude) - меняем последний бит числа в системе разрядности на 1, для отрицательных чисел, тем самым отмечая число как "отрицательное"
Данная система используется для обучения, но в компьютере числа так не хранятся
`Пример: 33 (16 bit) = 100001; -33 (16 bit) = 1000000000100001`
2. Обратный код (one\`s complement) - реверсивно записываем биты, для отрицательных чисел, меняя 0 на 1 и наоборот.
Данная система так же не используется в компьютере
`Пример: 33 (16 bit) = 100001; -33 (16 bit) = 1111111111011110`
3. Дополнительный код (two\`s compliment) - реверсивно записываем биты, для отрицательных чисел, меня 0 на 1 и наоборот, а так же сдвигаем все числа, увеличивая на 1 бит.
Такая система используется во всех современных компьютерах, она удобна для вычислений.
`Пример: 33 (16 bit) = 100001; -33 (16 bit) = 1111111111011111`
## Перевод чисел в двоичную систему счисления
1. Перевод из 10 в 2:
1. Раскладываем числа на сумму степеней двоек
$13=8+4+1=2^3+2^2+2^0$ (8 bit, из 2 в 10)
2. Каждой степени двойки приравниваем порядковый бит
$0_7 0_6 0_5 0_4 0_3 0_2 0_1 0_0$
$2^3+2^2+2^0 = 0_7 0_6 0_5 0_4 1_3 1_2 0_1 1_0$
2. Перевод из $2^N$ в 2:
1. Раскладываем число на составляющие цифры:
$123_{16}=1_2 2_1 3_0$ (16 bit, из 16 в 2)
2. Каждую цифру приравниваем к N битам в двоичном коде
$\begin{cases}1_2=0001\\ 2_1=0010\\ 3_0=0011\end{cases}=>1|0010|0011_2$
3. Перевод из N в 2:
1. Переводим число из N в 10
$123_7=1\cdot7^2+2\cdot7^1+3\cdot7^0=66_10$ (8bit, из 7 в 2)
2. Переводим из 10 в 2
$66_10=64+2=2^6+2^1=1000010_2$
## Перевод чисел из двоичной системы счисления
1. Перевод из 2 в 10:
1. Каждой степени двойки приравниваем порядковый бит
$0_7 0_6 0_5 0_4 0_3 0_2 0_1 0_0$
$0_7 0_6 0_5 0_4 1_3 1_2 0_1 1_0=2^3+2^2+2^0$ (8bit, из 2 в 10)
2. Раскладываем числа на сумму степеней двоек
$2^3+2^2+2^0=8+4+1=13$
2. Перевод из 2 в $2^N$:
1. Раскладываем число на составляющие N биты:
$1|0010|0011_2=>\begin{cases}1_2=0001\\ 2_1=0010\\ 3_0=0011\end{cases}$ - (16 bit, из 16 в 2)
2. Собираем из полученных цифр число
$1_2 2_1 3_0=123_{16}$
3. Перевод из 2 в N
1. Переводим из 2 в 10:
$1000010_2=64+2=2^6+2^1=66_10$ - (8bit, из 2 в 7)
2. Переводим число из N в 10
$66_10=1\cdot7^2+2\cdot7^1+3\cdot7^0=123_7$