php如何让变量里的值为二进制,我转换了但是一运算就变成十进制了,右移>>之后就变成十进制了
发布网友
发布时间:2022-10-11 19:56
我来回答
共1个回答
热心网友
时间:2023-10-14 18:24
无论什么语言中的位运算符都是按照计算机内的二进制而言的。
所以在人为计算的时候要将十进制的数字转化为二进制的数字运算后计算,再转回十进制即是答案。
我们来举个简单的例子吧。
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。
有问题追问追问我是要用二进制来标明状态,但是我定义出来为十进制,转换为二进制后,移位之后数字又是十进制了