GnuSmalltalkUsersGuide:BaseChapter 097

From 흡혈양파의 번역工房
Jump to: navigation, search
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