728x90
반응형

wide-integer : C++ 큰 정수(integer) 라이브러리


  • 홈페이지 : https://github.com/ckormanyos/wide-integer
  • 제작자 : Christopher Kormanyos
  • 목적
    • C++에서 정해진 크기를 넘어서는 매우 큰 정수를 안전하게 처리할 수 있는 라이브러리입니다.
    • std::uint128_t(128 비트 정수), std::uint256_t과 같은 넓은 비트 폭의 정수 를 지원하며, 하드웨어에서 직접 지원하지 않는 고정 크기 정수를 소프트웨어적으로 구현합니다.


1. 주요 특징

  • C++ 11 이상 지원
  • 사용자 정의 타입으로 uint128_t, int256_t 등 제공
  • 덧셈, 뺄셈, 곱셈, 나눗셈, 모듈로 연산 지원
  • 스트림 입출력 지원
  • 높은 성능 및 정밀도


2. 설치 방법

  • 라이브러리 자체는 헤더 전용이므로 다음과 같이 #include만 하면 사용 가능합니다.

  • cpp

      #include <wide-integer/wide_integer_include.hpp>
    


3. 기본 사용 예제

3.1. 128 비트(bit) 정수의 덧셈(+)

  • cpp

      #include <iostream>
      #include <wide-integer/wide_integer_include.hpp>
      
      int main() {
          using namespace wide_integer::literals;
          using uint128_t = wide_integer::uint128_t;
      
          uint128_t a = 0xFFFFFFFFFFFFFFFF;
          uint128_t b = 1;
          uint128_t result = a + b;
      
          std::cout << "a + b = " << result << std::endl;
          return 0;
      }
    
  • output

      a + b = 18446744073709551616
    
    • 16진수로 0x10000000000000000 입니다.


3.2. 큰 수의 곱셈(*)과 나눗셈(/)

  • cpp

      #include <iostream>
      #include <wide-integer/wide_integer_include.hpp>
      
      int main() {
          using uint256_t = wide_integer::uint256_t;
      
          uint256_t a = uint256_t(12345678901234567890ULL);
          uint256_t b = uint256_t(9876543210987654321ULL);
          uint256_t mul_result = a * b;
          uint256_t div_result = mul_result / a;
      
          std::cout << "곱셈 결과: " << mul_result << std::endl;
          std::cout << "나눗셈 검증 (mul_result / a): " << div_result << std::endl;
      
          return 0;
      }
    


3.3. 스트림(stream)으로 입력받고 출력하기

  • cpp

      #include <iostream>
      #include <wide-integer/wide_integer_include.hpp>
      
      int main() {
          using int512_t = wide_integer::int512_t;
          int512_t x;
      
          std::cout << "512비트 정수를 입력하세요: ";
          std::cin >> x;
      
          int512_t square = x * x;
          std::cout << "제곱 값: " << square << std::endl;
      
          return 0;
      }
    



  • 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄

728x90
반응형

+ Recent posts