GnuSmalltalkUsersGuide:BaseChapter 095

From 흡혈양파의 번역工房
Jump to: navigation, search
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가 다른 수를 식별하는지를 응답하라.


Notes