php当中的位运算符知道怎么用,但是用了之后竟然不知道结果是怎么得来的,能说说它是怎么一个运算过程
php当中的位运算符知道怎么用,但是用了之后竟然不知道结果是怎么得来的,能说说它是怎么一个运算过程么...
php当中的位运算符知道怎么用,但是用了之后竟然不知道结果是怎么得来的,能说说它是怎么一个运算过程么
展开
1个回答
展开全部
无论什么语言中的位运算符都是按照计算机内的二进制而言的。
所以在人为计算的时候要将十进制的数字转化为二进制的数字运算后计算,再转回十进制即是答案。
我们来举个简单的例子吧。
2 & 1 = 0
其运算过程为(这后面的都是二进制) 10 & 01,第一位1和0求与是0,第二位0和1求与为0,结果是00那答案就是0
来个复杂点的。
10 & 11 = 10;
换成二进制 1010 & 1011 = 1010 答案还是10;
所有的为运算符都是基于二进制来产生的。所以在&(与)、|(或)、^(异或)这三个预算中,要将两个或者更多运算数据转化为二进制数字,逐位进行运算。
~(取反)运算则更简单,转化为二进制以后0则写为1,1则写为0,然后再转回十进制就OK
最后来说说<<(进位)与>>(退位)。同样,位运算也是基于二进制的。将运算符前的值转化为二进制,运算符后的数可以还保留十进制。然后看作小数点位置不变,然所有数字(包括前后有无限个0),向左(进位)或向右(退位)移动N个数位,N则是运算符右边的数字。
举个例子 10<< 3 二进制转化1010 << 3
这个可以看作1010.000 << 3 然后保持小数点位置不变,所有数字整体向左位移3位。
结果就是1010000,转回十进制80。
对于进位而言,每进一位相当于乘2,每退一位相当于除2。
有问题追问
所以在人为计算的时候要将十进制的数字转化为二进制的数字运算后计算,再转回十进制即是答案。
我们来举个简单的例子吧。
2 & 1 = 0
其运算过程为(这后面的都是二进制) 10 & 01,第一位1和0求与是0,第二位0和1求与为0,结果是00那答案就是0
来个复杂点的。
10 & 11 = 10;
换成二进制 1010 & 1011 = 1010 答案还是10;
所有的为运算符都是基于二进制来产生的。所以在&(与)、|(或)、^(异或)这三个预算中,要将两个或者更多运算数据转化为二进制数字,逐位进行运算。
~(取反)运算则更简单,转化为二进制以后0则写为1,1则写为0,然后再转回十进制就OK
最后来说说<<(进位)与>>(退位)。同样,位运算也是基于二进制的。将运算符前的值转化为二进制,运算符后的数可以还保留十进制。然后看作小数点位置不变,然所有数字(包括前后有无限个0),向左(进位)或向右(退位)移动N个数位,N则是运算符右边的数字。
举个例子 10<< 3 二进制转化1010 << 3
这个可以看作1010.000 << 3 然后保持小数点位置不变,所有数字整体向左位移3位。
结果就是1010000,转回十进制80。
对于进位而言,每进一位相当于乘2,每退一位相当于除2。
有问题追问
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询