주요 콘텐츠

워드 길이보다 큰 소수부 길이

고정소수점 숫자에서 워드 길이보다 소수부 길이가 큰 경우는 그 숫자가 1보다 작은 절댓값이고 선행 0을 포함하는 경우에 발생합니다.

x = fi(.0234,1,8)
x = 

    0.0234

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 8
        FractionLength: 12

x의 이진수 표현을 봅니다.

disp(bin(x))
01100000

x의 소수부 길이가 워드 길이보다 4만큼 더 크기 때문에 이진 소수점 뒤와 저장된 정수의 이진수 표현 앞에는 묵시적 선행 0이 4개 있습니다.

선행 0이 4개 있는 x의 이진수 표현을 이진수에서 10진수로 변환하고 소수부 길이에 따라 이 값을 스케일링합니다.

bin2dec('000001100000')*2^(-12)
ans =

    0.0234

결과는 x의 실제 값입니다.

방정식 Real World Value = Stored Integer Value × 2Fraction Length을 사용하여 실제 값을 구할 수도 있습니다.

x의 저장된 정수를 구하는 것부터 시작합니다.

Q = storedInteger(x)
Q =

   96

저장된 정수를 사용하여 x의 실제 값을 구합니다.

real_world_value = double(Q) * 2^-x.FractionLength
real_world_value =

    0.0234

참고 항목