function shiftLeft16(value, shiftCount) {
return ((value & 0x7FFF) << shiftCount) | (value & ~0x7FFF);
}
function printValue16(value) {
java.lang.System.out.println(
value + "(" + java.lang.Integer.toBinaryString(value & 0xFFFF) + ")");
}
var value = -1;
printValue16(value);
printValue16(value << 16);
printValue16(shiftLeft16(value, 16));
// 結果は以下:
//-1(1111111111111111)
//-65536(0)
//-32768(1000000000000000)
2010-03-21
符号付き16ビット整数の左ビットシフトをRhinoでやってみる
シフト数を16にした時に、ようやく(value << shiftCount)だとダメだと気付いた。
Rhinoで独自プロパティを追加してJavaインタフェースを実装する
Javaインタフェースを実装するJavaScriptオブジェクトにプロパティを追加しておくと、Javaインタフェースで宣言されたメソッドからも利用できる。
var runner = new java.lang.Runnable() {
// 独自プロパティを追加する
message: "Hello, ",
// Javaインタフェースのメソッドを実装する
run: function() {
// 追加しておいたプロパティを使用する
java.lang.System.out.println(this.message + this);
}
};
new java.lang.Thread(runner).start();
java.lang.Thread.currentThread().sleep(100); // スクリプト本体の実行が終わらないように少し待つ
登録:
コメント (Atom)