特殊な用途のオペレータ

序文

PHPでこれらの演算子を使用して、ここではデフォルトの環境

A ^

はじめに: ^排他的論理和演算示し
XOR演算規則を: XORはバイナリ10進数に変換しました

0^0 = 0
1^0 = 1
0^1 = 1
1^1 = 0
即同为假,异为真(同假异真)

例: 10 ^ 24
の計算:

10^24运算步骤:
(1)先将1024分别转换为二进制:1010^11000,转化一下就是01010^11000
(2)按规则进行异或运算:
01010
11000
结果为:10010,转换为十进制为18

ヒント:0 ^不明、結果は不明です

第二に、〜

はじめに:行く抗後に0000、1111年ではなく、それほど頻繁に使用され、一般に、次のとおりです:〜は、例えば反転計算、バイナリの、すなわち逆を表し、
例えば:~9しかし、その値が-10である、なぜ?
反転動作ルール:
1、符号ビットの値が大きくなる前に、オリジナルコード表現(即ち、最上位ビットは符号ビットである):このビットが0の正の数であり、1ビットが負で
2の補数が計算される
(1)nは数の補数表現:=元のコード正数を補完
(2)負のオリジナルコードシンボルビットを補完= {} + {値が変化しないビットのビット反転後の+1 = {}か、元のコードシンボルビットによって可変} + {0の値は、左}ビット単位の第1の及び右の右の数字から変わらない
特定の基準:https://zhidao.baidu.com/question/148760603.html
計算:

~9计算过程:
(1)9转二进制:0 1001	//左边的0表示9这个数字是正数
(2)计算补码:0 1001	//因为9是正数,所以补码为原码,注意,原码是1001
(3)按位取反运算:1 0110	//符号位也要取反,这是取反的补码
(4)接上面再次取反:1 1001	//此时符号位不需要取反,只需要取一次即可
(5)末位加11 1010	//1001最后一位加1,由于是2,大于1,就变0,向前进1,前面的0变1
(6)还原源码:-10	//1 1010中1表示负号,1010二进制转十进制表示10,所以~9最后的结果为-10
~-9计算过程
(1)9转二进制:1 1001	//左边的1表示-9这个数字是负数
(2)计算补码:1 0111	//因为-9是负数,所以补码为{原码符号位不变}+{数值位从右边数第一个1及其右边的0保持不变,左边按位取反},即1 0111;注意,原码是1001
(3)取反运算:0 1000	//符号位也要取反,这是取反的补码
(4)再次取反:0 0111	//此时符号位不需要取反,只需要取一次即可
(5)末位加10 1000	//0111最后一位加1
(6)还原源码:8	//0 1000中0表示正号,1000二进制转十进制表示8,所以~-9最后的结果为8

ヒント:あなたはなど、666または999を指定したい場合は、あなたが直接することができ、合計する~~666或~~999
参照:https://blog.csdn.net/liu940204/article/details/51115704

第三に、<<または>>

はじめに:左シフト演算はオペランドの1ビットは、移動の指定した桁数だけ左にシフトし、ビットのうち破棄され、空孔右側に全て0。右シフト演算は、ビット数のオペランドのビットが破棄されたビットのうち、右方への移動を指定すると、空孔がすべて0または異なるマシンによって決定された相補符号ビットを、取り残さ。
参考:Baiduの百科事典
例: 10 10 >>と<< 3 3
計算:

10<<3运算步骤:
(1)10转换为二进制:1010
(2)二进制数全部向左移动三位,被移动的位被丢弃,右边的空位一律补0,在这里相当于最右边的0移到了最左边1的位置:1010000,这里也就是在右边加30
(3)最后将二进制转换为十进制,结果为80

10>>3
(1)10转换为二进制:1010
(2)二进制数全部向右移动3位,被移动的位被丢弃,左边移出的空位一律补0,在这里相当于1走到了最右边0的位置:0001
(3)最后将二进制转十进制,结果为1

ヒント:例えば、出発点としての移動の反対方向のシフトのバイナリ値の最初の数、より良好に理解されていない、>>、どちら側にシフト右に、Iは最初の数左端の2進数を取ります移動する出発点として

IV&

導入:&演算子を表すビット、値は、二進数に変換され、操作
ルールと操作: 0 0 = 0; 0&1 = 0; 1&0 = 0; 1&= 1、すなわち、同じ1を持つ2つは、結果はそうでなければ0
例: 10&24
の計算:

10&24运算步骤
(1)转二进制:1010&11000,即01010&11000
(2)与运算:
01010
11000
结果为:01000,转换为十进制为8

参考:https://www.cnblogs.com/net-safe/p/8488605.html

ファイブ、|

導入: |表すOR演算は、値を二進数に変換され、OR演算実行している
か、計算ルール: 0 0 = 0; 0&1 = 1; 1&0 = 1; 1&= 1、即ち、または2つのオペランドを長い値がある限り図1に示すように、その結果は
実施例: 10 | 24
計算:

10|24
(1)转二进制:1010&11000,即01010&11000
(2)或运算:
01010
11000
结果为:11010,转换为十进制为26
公開された148元の記事 ウォン称賛61 ビュー60000 +

おすすめ

転載: blog.csdn.net/qq_41617034/article/details/105251741