2008年9月7日日曜日

javaのlong定数ではまる

longの下位32bitだけ取り出そうと思って、32bitのマスクを定数で指定したらはまった。

32bitだからintでいいだろう→longと演算する時点で拡張されるから駄目。
さらに、Lつけないとlongにならないのをすっかり忘れてた。

こんなかんじ

long v = -1;
System.out.println(Long.toHexString(v&0xffffffff));
System.out.println(Long.toHexString(v&(long)0xffffffff));
System.out.println(Long.toHexString(v&0xffffffffL));

出力

ffffffffffffffff
ffffffffffffffff
ffffffff



0 件のコメント:

コメントを投稿