プロが教えるわが家の防犯対策術!

Javascript で符号付き変数として数値を取り出したいのですが、


var sig="32769";
var val;

val= parseInt(sig,10);

これを符号付き32bitの整数(-1)として取り出したいのですが、
上の例では64ビットの正数(32769)となっていまいます。

この場合どの様にすればよいのでしょうか?

宜しくお願いします。

A 回答 (3件)

そもそも、32bitの-1(1の32連続)を符号なし整数として見ると4294967295 なので、32769 をどうしようと -1 にはなりません。



var sig="4294967295 ";
var val;
val= parseInt(sig,10) | 0xFFFFFFFF00000000;
で、valが-1になります。
    • good
    • 0
この回答へのお礼

ご指摘の通り4294967295 の勘違いでした。
補数計算しかないのですね
有難う御座いました。

お礼日時:2019/10/02 08:27

16bit補数表現の-1を、同じビットパターンの符号なし整数として


解釈すると 65535。
15bit補数の-1も32767
なので32769 は勘違いでしょう。

16bit補数のbitパターンが必要なら

sig=sig-0;
if (65536<=sig) {
sig=(sig-65536) & 0x0000ffff
}
    • good
    • 0
この回答へのお礼

4294967295 の勘違いでした。
補数計算しかないのですね
有難う御座いました。

お礼日時:2019/10/02 08:27

できません



javascriptの数値は64bitのみです
    • good
    • 0
この回答へのお礼

有難う御座いました。

お礼日時:2019/10/02 08:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!