형들 안뇽
C린이가 책을 읽다가 궁금한게 생겼어
[ 10의 계승(10!)을 구하는 program이라면 간단히 만들 수 있겠지만 C에서 50의 계승(50!)을 구하기는 쉽지 않다. 50의 계승(50!)은 다음과 같다.
30144093201713378043612608166064768844377641568960512000000000000
전부 65자리이다. 이렇게 자릿수가 많아지면 직접적인 계산으로는 값을 구할 수가 없다.
C에서는 숫자는 정해진 범위 안에서 표현되고, 그 범위 안에서 처리된다라는 점을 명심해야 한다. 이 정해진 범위를 데이터 형이라고 부른다. ]
문1)
“C로 50! 구하기가 쉽지 않다” 라는 표현은,
구할 수 있다는 건가 구할수 없다는 건가?
손으로 계산하는 것도 아닌데 ‘쉽지 않다’라는 표현도 납득이 안가고,,,
문2)
“전부 65자리이다. 이렇게 자릿수가 많아지면 직접적인 계산으로는 값을 구할 수가 없다.”
이 말은 간접적인 계산으로는 구할 수 있다는 이야기인데, 그거는 C로 하는게 아닌건가?
ps : OS가 몇비트냐에 따라서 표현할 수 있는 자릿수가 달라질 수도 있을 것 같단 생각이 들기도 하지만,,,
총350페이지 책의 절반 정도 까지는 고개 끄덕이면서 잘 읽어왔는데, 저런 애매모호한 대목을 읽고 나니 걍 이 책에 정나미가 떨어져버리네
잽싸게 대답해줘 형들
해당 댓글은 삭제되었습니다.
아하 그게 사연이 있는거였구나 생초보를 대상으로 한 책인데 복잡한 내용은 설명을 원래 건너뛴다고 저자가 밝혀놓긴 했거든. 근데 형 답변을 읽어보니 역시 설명을 건너뛸 만 하네,,,들어도 모르겠으니 ㅋㅋ 암튼 야중에 진도 나가면 형이 말해준 biginteger 함 해볼게 고마워~
가장 범위가 큰 unsigned long long 조차 19~20자리수 까지밖에 못담음. 그 이상 가는 정수를 계산하려면 biginteger 기법이 필요함. 검색ㄱ
ㄴ 형 댓글 찍고 대댓글 달았더니 형 댓글이 없어져뿌네,,,미치긋네 미안혀 형
내가 빅인티저를 문자열로만 한다고 말해서 지운거임 실제론 문자열로도 하지만 16진수로도 많이해서 좆문가글처럼 보일까봐 지웟어
좀 병신같지만 문자열로 하면 가능하긴 함