GnuSmalltalkUsersGuide:BaseChapter 095

From 흡혈양파의 번역工房
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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