2 64 비트 정수가 있고 그것을 단일 128 비트 정수로 연결하고 싶습니다.2 개의 64 비트 정수를 128 비트 정수로 연결하는 방법은 무엇입니까?
uint64_t len_A;
uint64_t len_C;
len_AC= (len_A << 64) | len_C;
GCC는 uint128_t
을 지원하지 않습니다.
다른 방법이 있습니까?
2 64 비트 정수가 있고 그것을 단일 128 비트 정수로 연결하고 싶습니다.2 개의 64 비트 정수를 128 비트 정수로 연결하는 방법은 무엇입니까?
uint64_t len_A;
uint64_t len_C;
len_AC= (len_A << 64) | len_C;
GCC는 uint128_t
을 지원하지 않습니다.
다른 방법이 있습니까?
GCC에 uint128_t
이 없으면 128 비트 정수가 없어야합니다.
그래서 예를 들어 표현해야합니다.
struct my128int_st {
uint64_t hi, lo;
} ac;
ac.hi = a;
ac.lo = c;
먼저 128 비트 정수를 저장하는 방법을 결정해야합니다. 해당 차원의 기본 제공 정수 유형이 없습니다.
당신은 두 개의 64 비트 정수로 구성된 구조체로, 예를 들어, 정수를 저장할 수 있습니다 :
typedef struct { uint64_t high; uint64_t low; } int128;
가 그런 대답은 매우 간단합니다.
질문은 다음에이 정수로 무엇을 할 것인가입니다. 영감으로
는 말했다 :
문제는 다음에이 정수와 함께 할 예정 것입니다.
휴대용 및 안정적인 방식으로이를 처리하는 임의 정밀도 라이브러리를 사용하고 싶을 것입니다. 왜? 주어진 하드웨어에서 정수의 하이 엔드 또는 로우 엔드를 선택하는 것처럼 엔디안 문제를 다루는 경우가 있기 때문입니다.
코드를 실행할 위치를 알고있는 경우에도 모든 컴파일러가 128 비트 유형을 지원하지는 않으므로 128 비트 정수를 처리하는 전체 기능 집합을 개발해야합니다 GCC는 이러한 유형의 정수를 지원합니다. 예를 들어 기본적인 수학 연산을위한 함수 집합을 만들어야합니다.
그것은 당신이 GMP 라이브러리를 사용하는 경우, 더 많은 것을 위해 다음 링크를 방문 아마 더 나은: 128 비트 정수에 대한 http://gmplib.org/
GCC 문서 http://gcc.gnu.org/onlinedocs/gcc/_005f_005fint128.html을 – zch
두 개의 'uint64_t's로 저장 한 다음 그에 따라 작업을 구현하십시오. –
128 비트 인텔 SSE 내장 함수를 사용할 수 있습니다. http://stackoverflow.com/questions/9437599/sse-loading-ints-into-m128 – aust