3

MATLAB と 64 ビット整数に問題があります。2^63-1 (MSB を除くすべてのもの) に相当するマスクが必要ですが、MATLAB はすべてを丸めているようです。

>> mask_fraction = uint64(9223372036854775807)

mask_fraction = 9223372036854775808 % This is 2^63 again, not 2^63-1!

同様に、

  >> uint64(2^63)

    ans =  9223372036854775808       


    >> uint64(2^63-1)

    ans =  9223372036854775808

私の試みのもう1つは単に機能しません:

>> uint64(2^63) - 1
??? Undefined function or method 'minus' for input arguments of type 'uint64'.

考え?

4

4 に答える 4

1

使用している MATLAB のバージョンでサポートされているかどうかはわかりませんが、これが役立つかもしれません

mask_fraction = uint64(intmax('int64'))

返す

mask_fraction =
  9223372036854775807

2^63-1の最大値ですint64

于 2013-08-05T00:36:27.447 に答える