Чему равно 2^32?

«Чему равно 2^32?» — вопрос из категории Other, который задают на 25% собеседований C/C++ Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

2^32 равно 4 294 967 296. Это ключевое значение в C++ для работы с 32-битными типами.

Практический контекст в C++:

  • Это максимальное количество уникальных значений для 32-битного беззнакового целого типа (uint32_t).
  • Максимальное хранимое значение uint32_t равно 2^32 - 1, что составляет 4 294 967 295.

Пример кода:

#include <iostream>
#include <cstdint>
#include <cmath>

int main() {
    // Вычисление через сдвиг (для 64-битного типа, чтобы избежать переполнения)
    uint64_t two_pow_32 = 1ULL << 32;
    std::cout << "2^32 = " << two_pow_32 << std::endl; // 4294967296

    // Константы из <cstdint>
    std::cout << "UINT32_MAX = " << UINT32_MAX << std::endl; // 4294967295
    std::cout << "UINT32_MAX + 1 = " << UINT32_MAX + 1ULL << std::endl; // 4294967296

    // Пример переполнения
    uint32_t max_val = UINT32_MAX;
    uint32_t overflow = max_val + 1; // Значение становится 0 (wrap-around)
    std::cout << "UINT32_MAX + 1 (as uint32_t) = " << overflow << std::endl; // 0

    return 0;
}

В своей работе, особенно при вычислениях с индексами, размерами буферов или хэшами, я всегда внимателен к границам 32-битных типов, чтобы избежать непреднамеренного переполнения.