GnuSmalltalkUsersGuide:BaseChapter 095
- LargeInteger
LargeInteger
네임스페이스 Smalltalk에 정의됨
슈퍼클래스: Integer
범주: 언어-데이터 타입
- 나는 바이트의 긴 시퀀스로 저장해야 하는 큰 정수를 표현한다. 나는 산술과 비교를 위한 메서드를 갖고 있지만 속도를 증가시키기 위해선 나의 자식인 LargePositiveInteger과 LargeNegativeInteger로부터 도움이 필요하다.
LargeInteger: 접근하기
raisedToInteger: n
self의 anInteger 거듭제곱값을 리턴하라.
LargeInteger: 산술
* aNumber
aNumber와 수신자를 곱하고 결과를 응답하라.
+ aNumber
수신자와 aNumber를 더하고 결과를 응답하라.
- aNumber
수신자로부터 aNumber를 제하고 결과를 응답하라.
/ aNumber
aNumber와 수신자를 나누고 결과를 응답하라 (Integer 또는 Fraction).
// aNumber
aNumber와 수신자를 나누고 -무한대를 향해 절단한 결과를 응답하라.
\\ aNumber
aNumber와 수신자를 나누고 -무한대를 향해 절단한 결과를 응답하라.
divExact: aNumber
나머지가 0일 것으로 가정하고 수신자를 arg로 나누어 결과를 응답하라.
estimatedLog
(self abs floorLog: 10)의 추정값(estimate)을 응답하라.
negated
수신자의 negated를 응답하라.
quo: aNumber
aNumber와 수신자를 나누고 0에서 자른 결과를 응답하라.
rem: aNumber
aNumber와 수신자를 나누고 0에서 자른 나머지를 응답하라.
LargeInteger: 비트 연산
bitAnd: aNumber
aNumber와 AND한 수신자를 응답하라.
bitAt: aNumber
LSB가 1인 수신자 내에서 aNumber 번째 비트를 응답하라.
bitInvert
수신자의 1의 보수(complement)를 응답하라.
bitOr: aNumber
aNumber와 OR한 수신자를 응답하라.
bitShift: aNumber
aNumber 위치에 의해 전이(shifted)된 수신자를 응답하라.
bitXor: aNumber
aNumber와 XOR된 수신자를 응답하라.
lowBit
수신자의 가장 낮은 순서 1 비트의 색인을 리턴하라.
LargeInteger: built-ins
at: anIndex
수신자의 표현에서 anIndex 번째 바이트를 응답하라.
at: anIndex put: aNumber
수신자의 표현에서 anIndex 번째 바이트를 설정하라.
digitAt: anIndex
수신자의 표현에서 anIndex 번째 base-256 digit를 응답하라.
digitAt: anIndex put: aNumber
수신자의 표현에서 anIndex 번째 base-256 digit를 설정하라.
digitLength
수신자의 표현에서 base-256 digit 수를 응답하라.
hash
수신자에 대한 해시값을 응답하라.
primReplaceFrom: start to: stop with: replacementString startingAt: replaceStart
Private - start부터 stop까지 문자를 replacementString의 replaceStart 위치부터 시작해 replacementString(사실상 어떤 변수 바이트 클래스든 가능)에 포함된 새 문자로 문자로 대체하라.
size
수신자 내에서 색인된 인스턴스 변수의 수를 응답하라.
LargeInteger: 강제 유형 변환
asCNumber
수신자를 C call-out 메커니즘이 이해하는 유형의 숫자로 변환하라.
coerce: aNumber
숫자를 절단하라; 필요 시 LargeInteger 표현으로 변환하라.
generality
수신자의 범용성(generality)를 응답하라.
unity
1을 수신자의 클래스로 강제 유형 변환(coerce)하라.
zero
0을 수신자의 클래스로 강제 유형 변환(coerce)하라.
LargeInteger: 비활성화됨
asObject
이 메서드는 항상 실패한다. OOPs의 개수는 LargeInteger로 표현되는 최소 수보다 훨씬 적다.
asObjectNoFail
'nil'을 응답하라.
LargeInteger: 원시 연산
basicLeftShift: totalShift
Private - 수신자를 aNumber 위치만큼 왼쪽 이동하라.
basicRightShift: totalShift
Private - 수신자를 'shift' 위치만큼 오른쪽 이동하라.
largeNegated
Private - negated와 같지만 항시 LargeInteger를 응답하라.
LargeInteger: 검사하기
< aNumber
수신자가 aNumber보다 작은지를 응답하라.
<= aNumber
수신자가 aNumber보다 작거나 같은지를 응답하라.
= aNumber
수신자와 aNumber가 같은 수를 식별하는지를 응답하라.
> aNumber
수신자가 aNumber보다 큰지를 응답하라.
>= aNumber
수신자가 aNumber보다 크거나 같은지를 응답하라.
~= aNumber
수신자와 aNumber가 다른 수를 식별하는지를 응답하라.