Keep sign when using bitsliceget()
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Respuestas (1)
Krishnan Gopal
el 24 de Jul. de 2019
Editada: Krishnan Gopal
el 24 de Jul. de 2019
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 comentarios
Ver también
Categorías
Más información sobre Functions for Programming and Data Types en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!