「JavaScript/型付き配列」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎概要: 0づめの0は、自動変換されるものの本来は ”0”
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎概要: マークアップ修正
タグ: 2017年版ソースエディター
5 行
型付き配列は、C言語の配列のように要素数を予め決め全ての要素の型が同じオブジェクトなインデックス可能なコレクションです。
 
;[https://paiza.io/projects/IAZat2VMk0xU8oOmfdEK1w?language=javascript 型付き配列を使って浮動小数点数のビットパターンを表示する]:<syntaxhighlight lang="javascript" line>
実際のコードを示します。
const f64 = new Float64Array([0, 1, NaN, Infinity, -Infinity, Math.PI])
<source lang="javascript" line>
const f64b64 = new Float64ArrayBigUint64Array([0, 1, NaN, Infinity, -Infinity, Mathf64.PI]buffer);
f64.forEach((x, i) =>
const b64 = new BigUint64Array(f64.buffer);
console.log(`${(""+f64[i]x).padStart(17," ")}: ${b64[i].toString(2).padStart(64, "0")}`); )
for (let i = 0, len = f64.length; i < len; i++)
</syntaxhighlight>
console.log(`${(""+f64[i]).padStart(17," ")}: ${b64[i].toString(2).padStart(64, "0")}`);
;実行結果:<syntaxhighlight lang=text>
/*
0: 0000000000000000000000000000000000000000000000000000000000000000
1: 0011111111110000000000000000000000000000000000000000000000000000
18 行
-Infinity: 1111111111110000000000000000000000000000000000000000000000000000
3.141592653589793: 0100000000001001001000011111101101010100010001000010110100011000
</syntaxhighlight>
*/
: 行ごとに説明しましょう。
</source>
# Float64Arrayオブジェクトf64を <code>[0, 1, NaN, Infinity, -Infinity, Math.PI]</code> をパラメータとして生成
行ごとに説明しましょう。
# Float64Arrayオブジェクトf64を[0, 1, NaN, Infinity, -Infinity, Math.PI]をパラメータとして生成
# BigUint64Arrayオブジェクトb64をFloat64Arrayオブジェクトのバッファを引数に生成
# Float64Arrayの要素を順に
28 ⟶ 27行目:
6種類の[[w:IEEE 754|IEEE 754]]の[[w:倍精度浮動小数点数|64ビット倍精度浮動小数点数]]のバイナリ表現を表示したもので、TypedArray を使うと内部表現へのアクセスが buffer プロパティを使って可能になる事を示す例となっています。
 
: [[ファイル:IEEE_754_Double_Floating_Point_Format.svg]]
 
この様な ArrayBuffer を扱うためには、[[JavaScript/DataView|DataView]]オブジェクトが用意されていますが今回は同じ64ビット同士にすることでエンディアンの問題を回避しました。