ラメン用語で、ビット単位で何をしますか?演算子はJavascriptで実行し、その理由は次のとおりです。
8 | 1 ; //9
ラメン用語で、ビット単位で何をしますか?演算子はJavascriptで実行し、その理由は次のとおりです。
8 | 1 ; //9
バイナリで8=1000バイナリ
で1=0001
各2進数を取り、それらをステートメント(1がtrue、0がfalse)のように扱うと、次のようになります。
1 || 0 = 1
0 || 0 = 0
0 || 0 = 0
0 || 1 = 1
結果は1001で、10進数で9です。
8と1だった場合、次のようになります。
1 && 0 = 0
0 && 0 = 0
0 && 0 = 0
0 && 1 = 0
結果は0になります
これらの使用方法の簡単な例を次に示します。
マスクを組み合わせたい場合は、OR演算子を使用します-
ファイルパーミッションの例を使用すると、次のフラグが設定されている可能性があります。
1st bit - execute (bin - 001, dec - 1)
2nd bit - write (bin - 010, dec - 2)
3rd bit - read (bin - 100, dec - 4)
読み取りと実行のためのマスクを作成したい場合は、次のようなread value | execute value
こと1 | 4
を行います5
(ビン内の101)
&
これで、次の演算子を使用して、ファイルのアクセス許可をチェックし、ファイルにこれらのアクセス許可の両方があるかどうかを確認できるマスクができました。
サンプルファイル1(読み取り、書き込み、および実行があります)
その許可値は7(ビン内の111):111&101 = 101であるため、これらのパーマがあります
サンプルファイル2(読み取りと書き込みがあります)
その許可値は6(binで110):110&101 = 100であるため、マスクから提供された2つのパーマ(読み取り)は100(decで4)のみです。
演算子はビットごとの|
ORです。
8(基数10)は1000(基数2;バイナリ)です。1は0001です
だから、8 | 1(10進数)は1000に等しい| 0001バイナリ、つまり1001バイナリ、つまり9(基数10)。
コンピューター上のすべての値は、バイナリ形式でハードウェアに保存されます。
1 = 0001
2 = 0010
3 = 0011
4 = 0100
etc.
|
はOR演算子であり、両方の値のすべてのビットを組み合わせます。
8 - 1000
1 = 0001
--------
9 = 1001
さて、あなたの例では、バイナリ表現を取ります:
8 = 0b1000
1 = 0b0001
次に、各ビットに論理ORを適用します(したがって「ビット単位」)。各ビットについて、一方、他方、または両方が1の場合、結果は1になり、それ以外の場合、結果は0になります。
8|1 = 0b1001
これは9です。
2つの数値の2進表現を取り、それらの間の和集合( "または")を見つけます。
あなたが与えた2つを考えてみましょう:
binary(8) = 1000
binary(1) = 0001
したがって、ビットが最初の数値(8)または2番目の数値(1)で1である場合、または両方で1である場合、結果に引き継がれます。
つまり、2進数では「または」演算の結果であり、10進数では9であるためです8 | 1 = 9
。1001