0

私はこの機能を持っています:

public static final int UNSIGN(short b){

    return (b & 0xFFFF);
}

ここでの意図は、「b」の値を正であるかのように使用することです。これは、65536 個の値を保持できる unsigned int であるかのように使用することを意味します。しかし、うまくいきません。例えば:

'b == -122' の場合、関数は '65414' を返します。

私もこの方法を試しました:

public static final int UNSIGN(short b){

    return (b & 0xFF);
}

しかし、「b == 304」の場合、「48」が返されます。

私はここで本当に迷っています。誰かが助けてくれることを願っています。

4

1 に答える 1

2

ここでの意図は、'b' の値を正の値として使用することです。

の絶対値を求めたいということですbか?それはそうでしょうMath.abs

しかし、コードbunsigned short であるかのように扱っています。bが -122 の場合、ビットは

1111111110000110

...これは、符号なしの値として見ると 65414 です。

(122 は 0000000001111010 なので、これを無効にするには、値を 1 減らし、すべてのビットを反転します。)

于 2013-01-27T21:21:22.263 に答える