JavaScript勉強メモ6章
6. 長整数
数値型では扱えない大きな整数を扱える仕組み。
-
長整数リテラル:
数値の後ろにnをつけたら長整数だよlet num = 854n; console.log(num); >>854n let num2 = BigInt(1024);/*オブジェクトのコンストラクタでもかけるよ*/ console.log(num2); >>1024n
長整数を使うと、数値リテラルで扱えない(安全でない)大きな数値も演算できるよ
let num = 9007199254740991n;/*numに安全な最大数を長整数として入れる*/ cosole.log(num+2n); >>9007199254740993n/*ちゃんと計算される*/
-
長整数リテラルで利用可能な演算子
(長整数に+とか-とか**とか使えるの?)- 算術演算子
console.log(8n / 7n);/*8n÷7n*/ >> 1n/*答えは整数、小数点以下は切り捨て*/ console.log(34n % 8n);/*34n÷8nの余り*/ >> 2n console.log(9n ** 3n);/*9nの3n乗*/ >> 729n
-
ビット演算子、シフト演算子
-
ビット演算子:
2つの数値の関係(2進数にして同じ位の桁を比べる)から新しい数値をつくるよ
例) 論理積(&):
k桁目がどっちも1なら新しい数値のk桁目も1。それ以外ならk桁目は0。console.log(3n & 4n); >>0n
解説
3と4を二進数で表現して、それぞれの桁の関係を調べる。3 = 0 1 1 4 = 1 0 0 0 0 0 = 0 他のも似たルールです。調べてみてください。
シフト演算子:
ある数値を2進数で表現したとき、指定した数だけ桁をずらして新しい数値を作るよ -
等価演算子:
イコールとノットイコールのこと。書き方が変だから覚えてね。console.log(48n == 54n); >>false/*48nと54nはイコールじゃないよ*/ console.log(48n != 54n); >>true/*48nと54nはノットイコールだよ*/
-
関係演算子:
大なり(>)とか小なり(<)のことだよ -
インクリメント演算子とデクリメント演算子:
1足したり1引いたりするよlet num = 1; num++;/*numに1足してね*/ console.log(num); >>2/*numは今2だよ*/ --num;/*numから1引いてね*/ console.log(num) >>1
-
単項マイナス演算子:
-2とかのマイナス(-)のことconsole.log(-5n); >>-5n
-
-
長整数リテラルを数値に型変換する
長整数リテラルと数値リテラルは別物。一緒に計算できない。let bugnum = 10n;/*bignumに10n入れるよ*/ let num = Number(bignum);/*numに"bignumをNumber関数に入れた結果"をいれるよ*/ console.log(num); >>10/*numの中身は数値の10だよ*/
次に数値を長整数にする。(BigInt関数)
let num = 10; let bignum = BigInt(num);/*bignumに"numをBigInt関数に入れた結果"を入れるよ*/ console.log(bignum); >>10n/*numの中身は長整数の10nだよ*/
6章おしまい!