3

Matlab のヘルプ ファイルで typecast がどのように説明されているかを理解しました。しかし、私の結果に対処することはできません。次のように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 には 65304 と 47886 の 2 つの 16 ビット値があります。どのように計算されますか? では、C++ でどのように実装できますか? C++では、次のように実装しました

float f = -0.0022;
unsigned short a = static_cast<unsigned int>(f);
unsigned short b = static_cast<unsigned int>(f)>>16;

65304 と 47886 のように a と b を持つことはできません。

4

1 に答える 1