Binary representation of stored integer of fi object

9 views (last 30 days)
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?

Accepted Answer

Titus Edelhofer
Titus Edelhofer on 18 Mar 2013
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

More Answers (1)

Charles Jackel
Charles Jackel on 18 Mar 2013
Thank you! That helped a lot!

Tags

Community Treasure Hunt

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

Start Hunting!