GnuSmalltalkUsersGuide:BaseChapter 097
- 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를 곱하라 (부호가 없는 곱셈)