Ответ
В контексте тестирования и IT, степени двойки часто встречаются в работе с памятью, битовыми масками, размерами данных и лимитами. Вот основные:
Часто используемые степени двойки:
- 2^0 = 1
- 2^1 = 2
- 2^2 = 4
- 2^3 = 8
- 2^4 = 16
- 2^5 = 32
- 2^6 = 64
- 2^7 = 128
- 2^8 = 256
- 2^9 = 512
- 2^10 = 1024 (1 Кибибайт - KiB)
- 2^16 = 65,536 (классический порт для TCP/UDP, максимальное значение unsigned short)
- 2^20 = 1,048,576 (1 Мебибайт - MiB)
- 2^30 = 1,073,741,824 (1 Гибибайт - GiB)
- 2^32 = 4,294,967,296 (~4.3 млрд, максимальное значение для 32-битного unsigned int)
Практическое применение в тестировании:
- Проверка граничных значений: Часто нужно тестировать поля, принимающие размеры, кратные степеням двойки (например, загрузка файла размером 1 МБ, 2 МБ, 4 МБ, 8 МБ).
- Битовые флаги и маски: В API или настройках функции могут использовать битовые маски для комбинации опций.
- Анализ логов и дампов: Понимание шестнадцатеричных представлений, которые тесно связаны со степенями двойки.
Пример проверки на степень двойки в Python (полезно для валидации входных данных):
def is_power_of_two(n: int) -> bool:
"""Проверяет, является ли положительное целое число степенью двойки."""
if n <= 0:
return False
# Битовый трюк: у степени двойки в бинарном виде одна единица.
# n & (n - 1) обнуляет младший значащий бит. Для степени двойки результат будет 0.
return (n & (n - 1)) == 0
# Примеры использования в тестах (pytest):
def test_file_size_validation():
valid_sizes = [1024, 2048, 4096] # Степени двойки
invalid_sizes = [1000, 3000, 5000]
for size in valid_sizes:
assert is_power_of_two(size), f"{size} should be considered a valid power-of-two size"
for size in invalid_sizes:
assert not is_power_of_two(size), f"{size} should be considered invalid"