워드 길이보다 큰 소수부 길이
고정소수점 숫자에서 워드 길이보다 소수부 길이가 큰 경우는 그 숫자가 1보다 작은 절댓값이고 선행 0을 포함하는 경우에 발생합니다.
x = fi(.0234,1,8)
x =
0.0234
DataTypeMode: Fixed-point: binary point scaling
Signedness: Signed
WordLength: 8
FractionLength: 12x의 이진수 표현을 봅니다.
disp(bin(x))
01100000
x의 소수부 길이가 워드 길이보다 4만큼 더 크기 때문에 이진 소수점 뒤와 저장된 정수의 이진수 표현 앞에는 묵시적 선행 0이 4개 있습니다.
선행 0이 4개 있는 x의 이진수 표현을 이진수에서 10진수로 변환하고 소수부 길이에 따라 이 값을 스케일링합니다.
bin2dec('000001100000')*2^(-12)ans =
0.0234결과는 x의 실제 값입니다.
방정식 을 사용하여 실제 값을 구할 수도 있습니다.
x의 저장된 정수를 구하는 것부터 시작합니다.
Q = storedInteger(x)
Q = 96
저장된 정수를 사용하여 x의 실제 값을 구합니다.
real_world_value = double(Q) * 2^-x.FractionLength
real_world_value =
0.0234