곱하기 중 C ++ 큰 정수 정밀도 질문

마들렌 P. 빈센트

다음 프로그램을 실행하면 :

#include <iostream>

int main()
{
   using namespace std;

   uint64_t f12 = 18446744073709551568;
   uint64_t f3 = 2;
   uint64_t f123 = f12 * f3;

   cout << f12 << endl;
   cout << f3 << endl;
   cout << f123 << endl;

   return 0;

}

출력으로 얻습니다.

18446744073709551568
2
18446744073709551520

왜 f12의 2 배가 더 적은 값 (정확히 48)이되는지를 이해하지 못합니다. uint64 값의 크기에 도달하여 값이 롤오버 된 경우 매우 다르지 않습니까 (극단적 인 우연이 아니라면)?

Sam Varshavchik

당신은 그것을 "극단적 인 우연"으로 분류 할 수 있습니다. 18446744073709551568 바이너리는

FFFFFFFFFFFFFFD0

우리 모두는 이진 수학을 배웠을 때 2 곱하기가 왼쪽 이동과 동일하다는 것을 발견했습니다.

FFFFFFFFFFFFFFA0

그 주 D0입니다

11010000

2 진수로, 높은 비트가 설정되어 있으므로 하위 8 비트를 왼쪽으로 이동하면

10100000

또는 A0(높은 비트가 왼쪽으로 이동 됨).

그리고 이제 FFFFFFFFFFFFFFA0십진수를 계산 하면 질문에 대한 답을 얻을 수 있습니다 (순전히 우연히 48 A0개가 D0되는 3016 진수 보다 작기 때문에 이미 실마리를 얻고 있습니다).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

큰 수의 산술 정밀도 문제

분류에서Dev

부스트 다중 정밀도를 사용하여 큰 정수 및 이중 수를 계산하는 방법

분류에서Dev

파일 출력 중 C ++ 배정 밀도 정밀도

분류에서Dev

중첩 된 Excel 수식 수정 질문

분류에서Dev

C ++에서 두 개의 큰 배정 밀도 숫자를 추가하는 방법

분류에서Dev

이중 연산 정밀도 문제

분류에서Dev

문자열 및 정수 열 곱하기

분류에서Dev

C에서 단 정밀도 사용 배정 밀도 변수 읽기

분류에서Dev

C 랜덤 정수 생성기 질문 (A book on C 4th Edition)

분류에서Dev

곱하기 C #을 사용하지 않고 문자열을 정수로 변환

분류에서Dev

var = 둘 중 더 큰 변수를 설정하는 속기

분류에서Dev

C atmega2560 큰 정수 나누기

분류에서Dev

C ++에서 정수 오버플로 및 정수 곱하기

분류에서Dev

정의 된 기호 곱하기 (C ++)

분류에서Dev

C의 배정 밀도 정밀도

분류에서Dev

C의 배정 밀도 정밀도

분류에서Dev

Solr : 설명 할 수 없을 정도로 큰 문서 크기

분류에서Dev

C에서 정수 포인터 변수의 크기에 관한 질문

분류에서Dev

"su"도중에 루트의 프롬프트를 빨간색으로 표시하도록 쉘 초기화 파일을 수정하는 것에 대한 질문

분류에서Dev

시간의 부동 소수점 정밀도-곱하기와 나누기

분류에서Dev

정밀도와 정확성을 유지하면서 두 개의 큰 long 분할

분류에서Dev

다중 정밀도의 gmp_int 유형이 작동하도록하기

분류에서Dev

대규모 중앙값 정밀도 문제

분류에서Dev

교육 및 검증 LSTM 질문 : 정밀도 및 리콜 문제

분류에서Dev

Python-큰 정수를 사용한 정밀도 손실

분류에서Dev

C에서 연결 목록을 사용하여 큰 정수 곱셈을 어떻게 수행합니까?

분류에서Dev

랜덤 포레스트 또는 의사 결정 트리가 100 % 정밀도를 제공 할 수없는 이유는 무엇입니까? 그리고 중간에 큰 소음을 처리하는 방법은 무엇입니까?

분류에서Dev

C ++에서 "+"를 사용한 정수 변수 및 문자열 연결에 대한 매우 기본적인 질문

분류에서Dev

소수 / 2 차 분해 (C #)를 사용하여 큰 정수의 제수 찾기

Related 관련 기사

  1. 1

    큰 수의 산술 정밀도 문제

  2. 2

    부스트 다중 정밀도를 사용하여 큰 정수 및 이중 수를 계산하는 방법

  3. 3

    파일 출력 중 C ++ 배정 밀도 정밀도

  4. 4

    중첩 된 Excel 수식 수정 질문

  5. 5

    C ++에서 두 개의 큰 배정 밀도 숫자를 추가하는 방법

  6. 6

    이중 연산 정밀도 문제

  7. 7

    문자열 및 정수 열 곱하기

  8. 8

    C에서 단 정밀도 사용 배정 밀도 변수 읽기

  9. 9

    C 랜덤 정수 생성기 질문 (A book on C 4th Edition)

  10. 10

    곱하기 C #을 사용하지 않고 문자열을 정수로 변환

  11. 11

    var = 둘 중 더 큰 변수를 설정하는 속기

  12. 12

    C atmega2560 큰 정수 나누기

  13. 13

    C ++에서 정수 오버플로 및 정수 곱하기

  14. 14

    정의 된 기호 곱하기 (C ++)

  15. 15

    C의 배정 밀도 정밀도

  16. 16

    C의 배정 밀도 정밀도

  17. 17

    Solr : 설명 할 수 없을 정도로 큰 문서 크기

  18. 18

    C에서 정수 포인터 변수의 크기에 관한 질문

  19. 19

    "su"도중에 루트의 프롬프트를 빨간색으로 표시하도록 쉘 초기화 파일을 수정하는 것에 대한 질문

  20. 20

    시간의 부동 소수점 정밀도-곱하기와 나누기

  21. 21

    정밀도와 정확성을 유지하면서 두 개의 큰 long 분할

  22. 22

    다중 정밀도의 gmp_int 유형이 작동하도록하기

  23. 23

    대규모 중앙값 정밀도 문제

  24. 24

    교육 및 검증 LSTM 질문 : 정밀도 및 리콜 문제

  25. 25

    Python-큰 정수를 사용한 정밀도 손실

  26. 26

    C에서 연결 목록을 사용하여 큰 정수 곱셈을 어떻게 수행합니까?

  27. 27

    랜덤 포레스트 또는 의사 결정 트리가 100 % 정밀도를 제공 할 수없는 이유는 무엇입니까? 그리고 중간에 큰 소음을 처리하는 방법은 무엇입니까?

  28. 28

    C ++에서 "+"를 사용한 정수 변수 및 문자열 연결에 대한 매우 기본적인 질문

  29. 29

    소수 / 2 차 분해 (C #)를 사용하여 큰 정수의 제수 찾기

뜨겁다태그

보관