Binary representation of stored integer of fi object

조회 수: 17 (최근 30일)
Charles Jackel
Charles Jackel 2013년 3월 18일
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일
Thank you! That helped a lot!

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by