Effacer les filtres
Effacer les filtres

convert double to signed int

15 vues (au cours des 30 derniers jours)
michael
michael le 3 Mar 2020
Modifié(e) : Stephen23 le 11 Juin 2024
Hi,
Some doubt: if A=40000 = 0x9C40 and I'd like that 0x9C40 would be as signed integer - what shall be done?
executing int16, I'm getting
int16(A) = 32767
Any suggestion so that I'll get -25,536‬ ?

Réponses (3)

Walter Roberson
Walter Roberson le 11 Juin 2024
Depending on how the input is stated...
value = 0x9C40s16
value = int16 -25536

BhaTTa
BhaTTa le 11 Juin 2024
To interpret 0x9C40 as a signed 16-bit integer (which in two's complement would indeed be -25536), you can follow this approach:
  1. Direct Interpretation (If the number is already in two's complement): If you have a number that is already in a form of two's complement (like 0x9C40 for a 16-bit system) and you want to interpret it as a signed integer, you can do the following:
% Your hexadecimal value
hexVal = '9C40';
% Convert hex to a 16-bit signed integer
signedVal = typecast(uint16(hex2dec(hexVal)), 'int16');
% Display the result
disp(signedVal);
This code snippet uses hex2dec to convert the hexadecimal string to a decimal. Since hex2dec returns a number that doesn't have a sign, it's first considered as uint16 (unsigned 16-bit integer). The typecast function is then used to reinterpret this number as int16 without changing its bit representation, allowing it to be interpreted as a signed integer.

Stephen23
Stephen23 le 11 Juin 2024
Modifié(e) : Stephen23 le 11 Juin 2024
A = 40000
A = 40000
B = typecast(uint16(A), 'int16')
B = int16 -25536

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2015b

Community Treasure Hunt

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

Start Hunting!

Translated by