을, 또는 대체적인 관점에서 Fortran 변수는 var에 할당 된 메모리의 바이트 수로 정의됩니다. 사실, 모든 비교 가능한 컴파일러는 할당 된 바이트의 측면에서 vars를 정의합니다. 그렇지 않으면 시스템이 메모리에 할당/저장하는 것이 매우 어려울 것이며, 그러한 작업 없이는 산술 등을 수행하는 것이 매우 어렵습니다.
나를 위해, 약간 더 오래된 표기법 ("konfusion"보다는 오히려)을 사용하는 것이 더 쉽습니다. 특히, 많은 컴파일러가 종류와 유형간에 직접적인 1 : 1 대응을 제공합니다. bytes/var는 최대/최소 정수의 계산을 매우 간단하게 만듭니다 (일부 컴파일러는 비선형 또는 비 직접적인 통신을 사용합니다). 예를 들어,
Integer(1) :: Int1 ! corresponds to a 1 byte integer
Integer(2) :: Int1 ! corresponds to a 2 byte integer
Integer(4) :: Int1 ! corresponds to a 4 byte integer
Integer(8) :: Int1 ! corresponds to an 8 byte integer
비슷한 표기법은 다른 포트란 유형 (실수, 논리 등)에 적용됩니다. 모든 var 유형은 "크기"가 지정되지 않은 경우 할당 된 기본 바이트 수를가집니다
특정 유형의 최대 바이트 수는 컴파일러와 시스템에 따라 다릅니다 (예 : 정수 (16)는 모든 시스템에서 사용할 수있는 것은 아닙니다.
바이트는 8 비트이므로 1부터 번호가 매겨지면 단일 바이트는 2^8 = 256의 최대 값을 수용 할 수 있어야합니다.
그러나 Fortran에서는 (거의 모든) 숫자 변수가 "서명 됨"입니다. 이는 비트 표현의 어딘가에서 비트가 + ve 또는 -ve인지 여부를 추적하는 데 하나의 비트가 필요하다는 것을 의미합니다. 따라서이 예에서 max는 2^7이 될 것입니다. 왜냐하면 한 비트가 "부호"정보에 대해 "유실/예약"되기 때문입니다. 따라서 부호가있는 1 바이트 정수의 값은 -127 : +128입니다 (Abs (제한) 합계가 255로 표시됨). "0"은 한 곳을 차지하므로 합계 256 개의 "things"가 필요합니다. 있다).
유사한 규칙이 2^n의 지수 n과 함께 모든 바이트에 적용되며 바이트 수에 따라 다릅니다. 예를 들어 Integer (8) var는 부호 정보 용으로 1 비트 손실/예약 된 8 바이트 또는 64 비트를 가지므로 가장 큰 값은 2^63 = 9223372036854775808 (1부터 번호가 매겨진 경우) 또는 시작시 4611686018427387904
IntNum = s * Sum[ w(k) * 2^(k-1), k=1:(NumBytes*8)-1],
은 (k)는 w (S) = "사인"(+/- 1)의 k 번째 비트에 1 또는 0이다 : 0.
의 표준 정수 데이터 모델은 다음과 같이 일반화 될 값.
형식 선언에 명시 적 숫자 또는 env 변수를 사용할 필요가 없습니다. 사용자 정의 컴파일 타임 상수 (즉, 매개 변수)가 허용됩니다.
Integer, Parameter :: DP = Kind(1.0d0) ! a standard Double Precision/8-byte declaration
Integer, Parameter :: I4B = 4 ! NOTICE, here the "Integer" bit has not been explicitly "sized", so defaults to "Integer(4)"
!
Real(DP) :: ADoublePrecReal ! an 8-byte Real (approx 15 decimal places with exp +/- approx 300, see Real data model)
!
Integer(I4B) :: AStandardInt ! a 4-byte integer.
매개 변수 문 등의 사용을 통해 액세스 할 다른 모듈에있을 수 있기 때문에 예를
를 들어, 원하는 "정밀도"의 다른 정의를 큰 복잡한 코드를 컴파일하는 간단한 문제입니다. 예를 들어, DP를 Kind (1.0)로 편집하면 선언이 적용되는 모든 곳에서 "단 정밀도"Real이됩니다.
Fortran 내장 함수 Huge(), Tiny() 등은 주어진 시스템에서 가능한 것을 결정하는 데 도움이됩니다.
Fortran "비트"내장 함수 및 기타 도구/메소드를 사용하면 훨씬 많은 작업을 수행 할 수 있습니다.
이 나중에 많은 사람에게 적합합니다. 내장 함수는 없지만 항상 가능한 한 가장 작은 정수를 계산하기 위해'-huge (n)'을 사용할 수 있습니다. – NoseKnowsAll