Скорость передачи данных
Скорость канала, объём данных и время связаны одной короткой формулой V = v · t — научимся применять её и не путать биты с байтами.
Когда вы скачиваете фильм, отправляете фото в мессенджере или ждёте загрузки страницы, всё упирается в один вопрос: насколько быстро байты пробегают по каналу связи. Этот «темп» называют скоростью передачи данных, и почти все школьные и экзаменационные задачи на эту тему решаются одной формулой плюс аккуратным переводом единиц.
Скорость передачи данных v — это количество информации, передаваемое по каналу связи за единицу времени. Измеряется в битах в секунду (бит/с). Объём переданных данных равен произведению скорости на время: V = v · t.
Главная формула и три задачи из неё
Формула V = v · t — это та же логика, что «путь = скорость · время» в физике. Из неё получаются три типа задач, в зависимости от того, что неизвестно:
- Объём:
V = v · t— сколько данных пройдёт за время t. - Время:
t = V / v— сколько секунд займёт передача файла объёмом V. - Скорость:
v = V / t— какова пропускная способность канала.
Всё просто, пока единицы согласованы. И именно здесь спотыкается большинство — поэтому сначала разберёмся с единицами.
Единицы скорости и опасная буква «Б»
Скорость канала измеряют в битах в секунду и кратных единицах. Обратите внимание: при переходе к большим единицам множитель 1024 (это 2¹⁰), а не 1000.
| Единица | Сколько это бит/с | Где встречается |
|---|---|---|
| 1 бит/с | 1 | теоретическая база |
| 1 Кбит/с | 1024 | старые модемы, медленные сети |
| 1 Мбит/с | 1024 · 1024 = 1 048 576 | домашний интернет, тарифы |
| 1 Гбит/с | 1024³ ≈ 1,07 млрд | оптика, дата-центры |
А теперь ловушка. Тарифы провайдеров пишут в Мбит/с (мегабит), а размер файла на диске — в Мбайт (мегабайт). В одном байте 8 бит, поэтому «100 Мбит/с» — это всего около 12,5 Мбайт/с. Когда вы видите, что файл на 100 Мбайт качается дольше, чем за секунду на «стомегабитном» канале, виновата именно эта восьмёрка.
Запомните перевод: 1 байт = 8 бит. Чтобы перевести байты в биты — умножаем на 8, биты в байты — делим на 8.
Пример 1. Сколько времени качается файл
Файл размером 3 Мбайта передают по каналу со скоростью 512 Кбит/с. Сколько секунд займёт передача?
Приведём всё к битам. Объём: 3 Мбайта = 3 · 1024 · 1024 байт · 8 = 25 165 824 бит. Скорость: 512 Кбит/с = 512 · 1024 = 524 288 бит/с. Тогда t = V / v = 25 165 824 / 524 288 = 48 секунд.
Пример 2. Какой объём пройдёт за время
Канал работает на скорости 2 Мбит/с. Сколько мегабайт передастся за 1 минуту (60 секунд)?
Объём в битах: V = v · t = 2 · 1024 · 1024 · 60 = 125 829 120 бит. Переведём в байты (делим на 8): 15 728 640 байт, и в мегабайты (делим на 1024 дважды): 15 728 640 / 1024 / 1024 = 15 Мбайт.
Пример 3. Найти скорость канала
За 4 секунды передали файл размером 256 Кбайт. Какова скорость канала в Кбит/с?
V = 256 · 1024 · 8 = 2 097 152 бит, отсюда v = V / t = 2 097 152 / 4 = 524 288 бит/с = 524 288 / 1024 = 512 Кбит/с.
Калькулятор времени передачи
Ниже — калькулятор на Python. Он принимает объём файла в мегабайтах и скорость канала в мегабитах в секунду, аккуратно переводит всё в биты и печатает время передачи. Запустите его и поменяйте числа: попробуйте посчитать, сколько качается фильм на 1400 Мбайт при скорости 50 Мбит/с.
def transfer_time(file_mb, speed_mbit):
# переводим объём файла в биты: Мбайт -> байты -> биты
volume_bits = file_mb * 1024 * 1024 * 8
# переводим скорость в биты в секунду: Мбит/с -> бит/с
speed_bits = speed_mbit * 1024 * 1024
# время = объём / скорость
seconds = volume_bits / speed_bits
return seconds
for file_mb, speed_mbit in [(3, 4), (700, 100), (1400, 50)]:
t = transfer_time(file_mb, speed_mbit)
print(f"Файл {file_mb} Мбайт при {speed_mbit} Мбит/с: {t:.1f} с")
Заметьте, как формула t = V / v работает одинаково на любых числах: важно лишь, чтобы и объём, и скорость были в одних базовых единицах — битах и битах в секунду.
Ожидаемый вывод:
Файл 3 Мбайт при 4 Мбит/с: 6.0 с Файл 700 Мбайт при 100 Мбит/с: 56.0 с Файл 1400 Мбайт при 50 Мбит/с: 224.0 с
Алгоритм решения любой задачи
Чтобы не запутаться, держите в голове чёткий порядок действий: сначала переводим всё в биты, потом применяем формулу, и только в конце переводим ответ в нужные единицы.
file_mb = float(input())
speed_mbit = float(input())
volume_bits = file_mb * 1024 * 1024 * 8
speed_bits = speed_mbit * 1024 * 1024
if speed_bits > 0:
seconds = volume_bits / speed_bits
print(seconds)
else:
print(0)
Схема показывает суть: два перевода единиц, проверка, что скорость не ноль, и одно деление. Тот же скелет годится для любой из трёх задач — меняется лишь то, какую величину мы оставляем неизвестной.
Частые ошибки
- Путают биты и байты: складывают мегабиты тарифа с мегабайтами файла без деления (или умножения) на 8.
- Берут множитель 1000 вместо 1024 при переводе Кбит → бит и Мбит → Кбит.
- Забывают перевести минуты в секунды (или часы в секунды) перед подстановкой в формулу.
- Сравнивают «Кбит/с» и «Кбайт/с» как одно и то же — это отличается в 8 раз.
Коротко
- Скорость канала v измеряется в бит/с; объём, скорость и время связаны как
V = v · t. - Три задачи: время
t = V / v, объёмV = v · t, скоростьv = V / t. - 1 байт = 8 бит; большие единицы растут множителем 1024.
- Алгоритм: всё в биты → формула → перевод ответа в нужные единицы.
- Главная ловушка — путаница бит/байт и Кбит/с против Кбайт/с.