GnuSmalltalkUsersGuide:BaseChapter 097

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.
LargePositiveInteger

LargePositiveInteger

네임스페이스 Smalltalk에 정의됨

슈퍼클래스: LargeInteger

범주: 언어-데이터 타입


나의 형제 LargeNegativeInteger와 마찬가지로 LargeInteger가 계산 중에 큰 정수의 부호를 빨리 알아낼 수 있도록 몇 가지 메서드를 제공한다. 예를 들어, 나는 어떤 LargeNegativeInteger보다도 내가 크다는 사실을 안다. 그리고 나는 많은 임의 정밀도 산술을 구현한다.


LargePositiveInteger: 산술

+ aNumber

수신자와 aNumber를 합하여 결과를 응답하라.

- aNumber

수신자로부터 aNumber를 제하여 결과를 응답하라.

gcd: anInteger

수신자와 anInteger의 최대공약수를 계산하라.

highBit

수신자의 가장 큰 비트의 색인을 응답하라.


LargePositiveInteger: 변환하기

asFloatD

FloatD로 변환된 수신자를 응답하라.

asFloatE

FloatE로 변환된 수신자를 응답하라.

asFloatQ

FloatQ로 변환된 수신자를 응답하라.

replace: str withStringBase: radix

수신자의 밑(base radix) 표현을 String str로 리턴하라.


LargePositiveInteger: helper 바이트-수준 메서드

bytes: byteArray1 from: j compare: byteArray2

Private - byteArray2 - byteArray1 의 부호를 응답하라; byteArray1 의 j 번째 바이트는 byteArray2의 첫 번째 바이트에 일치하고 j+1 번째는 두 번째 바이트에 일치하는 식이다.

bytes: byteArray1 from: j subtract: byteArray2

Private - byteArray1의 바이트에서 byteArray2의 바이트를 제하라.

bytes: bytes multiply: anInteger

Private - bytes의 바이트와 anInteger의 바이트를 곱하되 < 255 범위에 있어야 한다. 결과를 바이트로 가져오라.

bytesLeftShift: aByteArray

Private - aByteArray의 바이트를 1 place만큼 왼쪽 이동하라.

bytesLeftShift: aByteArray big: totalShift

Private - aByteArray의 바이트를 totalShift place만큼 왼쪽 이동하라.

bytesLeftShift: aByteArray n: shift

Private - aByteArray의 바이트를 shift place만큼 왼쪽 이동하라 (shift <= 7).

bytesRightShift: aByteArray big: totalShift

Private - aByteArray의 바이트를 totalShift place만큼 오른쪽 이동하라.

bytesRightShift: bytes n: aNumber

Private - 'bytes'의 바이트를 'aNumber' place만큼 오른쪽 이동하라 (shift <= 7).

bytesTrailingZeros: bytes

Private - 수신자 내의 소수점 이하 0의(trailing zero) 비트 수를 응답하라.

primDivide: rhs

Private - 'Seminumerical Algorithms' 3rd Edition, section 4.3.1으로부터 올바른 알고리즘과 Knuth's divide를 구현한다 (기본적으로 초등학생 대 배운 2자리 나눗셈의 나누기 '알고리즘'의 향상된 버전이다).


LargePositiveInteger: 수치 검사

abs

수신자의 절대값을 응답하라.

negative

수신자가 <0인지 응답하라.

positive

수신자가 >=0인지 응답하라.

sign

수신자의 부호를 응답하라.

strictlyPositive

수신자가 >0인지 응답하라.


LargePositiveInteger: 원시 연산

divide: aNumber using: aBlock

Private - 수신자를 aNumber로 나누어라 (부호가 없는 나눗셈). aBlock을 평가하고 결과 ByteArray와 나머지 ByteArray, 그리고 나눗셈 나머지의 존재 유무를 전달하라.

isSmall

Private - 수신자가 나눗셈과 곱셈에 대한 간단한 스칼라 알고리즘을 이용하기에 충분히 작은지를 응답하라.

multiply: aNumber

Private -수신자와 aNumber를 곱하라 (부호가 없는 곱셈)


Notes