Binary representation of stored integer of fi object

I am using a lookup table with values ranging from 0 to pi/4.
These values are all less than one, i.e. 0 to .7854.
I am using the bin function to get the eight MSBs of a 16 bit number.
I noticed that bin(fi(.5000,0,16)) = 1000 0000 0000 0000 but bin(fi(.4555, 0, 16)) = 1110 1001 0011 0111
with bin(fi(.2500,0,16)) = 1000 0000 0000 0000.
Why do .5 and .25 have the same binary representation? Why does .4555 have a larger sized binary representation?

 채택된 답변

Titus Edelhofer
Titus Edelhofer 2013년 3월 18일
Hi,
if you only specify the word length and not the fraction length you get two different objects:
>> fi(0.25, 0, 16)
ans =
0.2500
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 16
FractionLength: 17
>> fi(0.5, 0, 16)
ans =
0.5000
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 16
FractionLength: 16
Note the difference on the FractionLength.
Now if you want to have numbers between 0 and 1, so FractionLength 16, you get what I think you are looking for:
>> bin(fi(0.5, 0, 16, 16))
ans =
1000000000000000
>> bin(fi(0.25, 0, 16, 16))
ans =
0100000000000000
Titus

추가 답변 (1개)

Charles Jackel
Charles Jackel 2013년 3월 18일

0 개 추천

Thank you! That helped a lot!

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by