1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【JavaScript】numberのビットを見る【IEEE754】

Posted at

#はじめに
JavaScriptの数値がどのようにビットが立っているか知りたくなりました。
そこでFloat64Arrayをを使って表示してみました。
こちらの浮動小数点シミュレーターで比較したり、toString(2)で比較して一致しているのを確認しているので、numberでもメモリ上はFloat64Arrayと同じなのかな?って思っています。

#IEEE754について簡単に説明

IEEE754の64bitは以下のようになっております。
符号部(1bit) | 指数部(11bit) | 仮数部(52bit)
仮数部は先頭の1を省略するので、実質53bitです。
詳しくはググってください。
ここが分かりやすいと思います。

#プログラム

const float64 = new Float64Array(1);
float64[0] = 0.1; // ここで値を変更してください。
console.log(float64[0]);
const uint8 = new Uint8Array(float64.buffer);
const str = uint8.reduce((p, c) => ('00000000' + c.toString(2)).slice(-8) + p, '');
console.log(str);

#プログラム実行して比較
0.1と0.2でプログラムを実行して、
こちらの浮動小数点シミュレーターで比較したり、toString(2)で比較してみます。

###0.1をプログラム実行

01pg.png

###0.1を浮動小数点シミュレーターで実行
一致しています。
01pg.png

###0.1をtoString(2)
2番目の1から比較すると、仮数部が一致しています。
01_02.png

###0.2をプログラム実行
02pg.png

###0.2を浮動小数点シミュレーターで実行
一致しています。
02simu.png

###0.2をtoString(2)
2番目の1から比較すると、仮数部が一致しています。
02_02.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?