バイナリと10進数の相互回転法による関連知識
2235 ワード
2進法は0と1で表され、10進法は0-9からの数字を指す.高位から低位への変換の際には、高位数を2で割ることで、割り切れる数を0とする.次に例を挙げて説明する.例:
8のバイナリアルゴリズムは
8/2=4補0;
4/2=2補0;
2/2=1補0;
1/2=1;
最後に結果を逆さまにした:1000;
低位から高位に回転するときに2のN乗を掛ける.例:
1000の10進数の計算方法は次のとおりです.
0*2の0次方;
0*2の1次方
0*2の2次方;
1*2の3次方;
最後に得られた結果は8であった.
【適用例】
JAVACSCRIPTには、ビット単位の左シフト演算子(<)とビット単位の右シフト演算子(>>>)とビット単位のAND演算子(&)とビット単位のOR演算子(|)があります.
ビット別OR演算子(^)は、進数変換の問題に使用されます.
例:
1.
8>>2結果は2ですが、どうやって手に入れたのでしょうか.まず8を2進数1000に変換する.右に2位移動すると0010になります.
前の2進数から10進数への知識を用いると結果は2.
同理8<<2バイナリの表現は100000であり,10進数に変換した結果は32であった.
(もちろん、ここではより簡単なアルゴリズムがあります.右にシフトするときはこの数を2の移動するビット数の倍数で割って、左にシフトするときはこの数に2の移動するビット数の倍数を乗じます.)
ビット単位AND演算子(&)
&演算子は、2つの式のバイナリ表現の値を表示し、ビット単位のAND操作を実行します.この操作の結果は次のとおりです.
いずれの場合も、2つの式のいずれかが1であれば、結果のビットは1になります.そうでなければ、結果のビットは0です.
運用:8&2結果は
8のバイナリは1000、2のバイナリは0010、比較後のバイナリ結果は0000である結果は0である.
ビット単位OR演算子(|)
|演算子は、2つの式のバイナリ表現の値を表示し、ビットOR操作を実行します.この操作の結果は次のとおりです.
いずれの場合も、いずれかの式の1つが1であれば、結果の1つは1になります.そうでなければ、結果のビットは0です.
運用:8|2結果は
8のバイナリは1000、2のバイナリは0010、比較後のバイナリ結果は1010で結果は10.
ビット別OR演算子(^)
^演算子は、2つの式のバイナリ表現の値を表示し、ビット別ORを実行します.この操作の結果は次のとおりです.
結果のビットは、式の1つだけが1である場合にのみ1になります.そうでない場合、結果のビットは0です.
運用:8^2の結果は
8のバイナリは1000、2のバイナリは0010、比較後のバイナリ結果は1010で結果は10.
=========================================================================
=========================================================================
【2進数と8進数と16進数の変換を補う】
8進数は0-7の数字から、16進数は0-9、A-Fで表します.ここではアオで概念的なことを述べない.列は56.22を
2の3乗は8
(101)(110).(010)(010)
バイナリの最終結果は次のとおりです.
110101.01001.
【解釈:小数点以下の数字は左から右へ3桁ごとに1位が3桁未満で0を補い、小数点前の数は右から左へ3桁ごとに0を補います.】
16進5 D.32バイナリに変換:
同理
2の4乗は16なので4位で1位です.
(0101)(1101).(0011)(0010)
最終結果は次のとおりです.
11010101.0011001
8のバイナリアルゴリズムは
8/2=4補0;
4/2=2補0;
2/2=1補0;
1/2=1;
最後に結果を逆さまにした:1000;
低位から高位に回転するときに2のN乗を掛ける.例:
1000の10進数の計算方法は次のとおりです.
0*2の0次方;
0*2の1次方
0*2の2次方;
1*2の3次方;
最後に得られた結果は8であった.
【適用例】
JAVACSCRIPTには、ビット単位の左シフト演算子(<)とビット単位の右シフト演算子(>>>)とビット単位のAND演算子(&)とビット単位のOR演算子(|)があります.
ビット別OR演算子(^)は、進数変換の問題に使用されます.
例:
1.
8>>2結果は2ですが、どうやって手に入れたのでしょうか.まず8を2進数1000に変換する.右に2位移動すると0010になります.
前の2進数から10進数への知識を用いると結果は2.
同理8<<2バイナリの表現は100000であり,10進数に変換した結果は32であった.
(もちろん、ここではより簡単なアルゴリズムがあります.右にシフトするときはこの数を2の移動するビット数の倍数で割って、左にシフトするときはこの数に2の移動するビット数の倍数を乗じます.)
ビット単位AND演算子(&)
&演算子は、2つの式のバイナリ表現の値を表示し、ビット単位のAND操作を実行します.この操作の結果は次のとおりです.
0101 (expression1)
1100 (expression2)
----
0100 (result)
いずれの場合も、2つの式のいずれかが1であれば、結果のビットは1になります.そうでなければ、結果のビットは0です.
運用:8&2結果は
8のバイナリは1000、2のバイナリは0010、比較後のバイナリ結果は0000である結果は0である.
ビット単位OR演算子(|)
|演算子は、2つの式のバイナリ表現の値を表示し、ビットOR操作を実行します.この操作の結果は次のとおりです.
0101 (expression1) 1100 (expression2) ---- 1101 (
结果)
いずれの場合も、いずれかの式の1つが1であれば、結果の1つは1になります.そうでなければ、結果のビットは0です.
運用:8|2結果は
8のバイナリは1000、2のバイナリは0010、比較後のバイナリ結果は1010で結果は10.
ビット別OR演算子(^)
^演算子は、2つの式のバイナリ表現の値を表示し、ビット別ORを実行します.この操作の結果は次のとおりです.
0101 (expression1) 1100 (expression2) ---- 1001 (
结果)
結果のビットは、式の1つだけが1である場合にのみ1になります.そうでない場合、結果のビットは0です.
運用:8^2の結果は
8のバイナリは1000、2のバイナリは0010、比較後のバイナリ結果は1010で結果は10.
=========================================================================
=========================================================================
【2進数と8進数と16進数の変換を補う】
8進数は0-7の数字から、16進数は0-9、A-Fで表します.ここではアオで概念的なことを述べない.列は56.22を
2の3乗は8
(101)(110).(010)(010)
バイナリの最終結果は次のとおりです.
110101.01001.
【解釈:小数点以下の数字は左から右へ3桁ごとに1位が3桁未満で0を補い、小数点前の数は右から左へ3桁ごとに0を補います.】
16進5 D.32バイナリに変換:
同理
2の4乗は16なので4位で1位です.
(0101)(1101).(0011)(0010)
最終結果は次のとおりです.
11010101.0011001