Keep sign when using bitsliceget()
2 ビュー (過去 30 日間)
古いコメントを表示
Hi there,
I want to extract 8 bits from a 16bit fixed point number using bitsliceget(). Unfortunately the result is always an unsigned variable, which is not what I want.
Here is a little example:
x = fi(-0.12835,true, 16,10);
x.bin
ans = 1111111101111101
y = bitsliceget(x,9,2)
ans = 190
DataTypeMode: Fixed-point: binary point scaling
Signedness: Unsigned
WordLength: 8
FractionLength: 0
y.bin
ans = 10111110
bitsliceget(x,9,2) actually does exactly what I want it to but I just can't get y to become a signed variable without recasting and therefore changing the binary representation.
Any help would be highly appreciated.
Thanks it advance for taking the time!
Regards,
Len
0 件のコメント
回答 (1 件)
Krishnan Gopal
2019 年 7 月 24 日
編集済み: Krishnan Gopal
2019 年 7 月 24 日
Hi
The result of bitsliceget is always interpreted as an unsigned type, so you can use the 'reinterpretcast' function to re-evaluate it as a numeric signed type. In your case, the you should cast it to a signed numerictype with 8 bits as shown:
y = reinterpretcast(bitsliceget(x,9,2), numerictype(1,8,0));
regards
Krishnan
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Functions for Programming and Data Types についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!