我了解在 Matlab 的帮助文件中如何解释类型转换。但无法应付我的结果。我尝试按如下方式对 3x4 矩阵进行类型转换。
A= -0.0022 -87.8788 -96.2848 -96.9586
0.9891 -52.9250 -52.7722 -52.7780
0.1473 -4.8680 -6.0184 -5.9894
ANS = typecast(A(:), 'uint16');
然后 ANS 向量变为
ANS=65304
47886
13518
16253
55853
15894
49650
49839
45875
49747
50835
49307
37329
49856
5820
49747
38546
49344
60110
49857
7340
49747
43369
49343
也就是说,-0.0022 有两个 16 位值 65304 和 47886。它是如何计算的?那我如何在 C++ 中实现呢?在 C++ 中,我实现了
float f = -0.0022;
unsigned short a = static_cast<unsigned int>(f);
unsigned short b = static_cast<unsigned int>(f)>>16;
我不能将 a 和 b 作为 65304 和 47886。