echo
因为^在php中是异或运算符,也就是说在二进制中1^1=0,0^0=0,1^0=1,0^1=1
我们用一个字节(即八位二进制数)为例:
00000011
①.1111101
=11111110
转换十六进制字符串为二进制字符串.
参数:
data:十六进制表示的数据
返回值:
返回给定数据的二进制表示 ?或者在失败时返回 FALSE.
异常:
如果输入的十六进制字符串是奇数长数或者无效的十六进制字符串将会抛出E_WARNING 级别的错误.
示例:
base_convert — 在任意进制之间转换数字
string?base_convert(?string?$number,?int?$frombase,?int?$tobase)
number:要转换的数字
frombase:原始进制
tobase:转换后的进制
字母"a":
二进制:1100001
你可以通过以下代码来查看:
php
$num?=?ord('a');
//二进制
echo?decbin($num),',';
//八进制
echo?decoct($num),',';
//十进制
echo?$num,',';
//十六进制
echo?dechex($num),',';
php的位运算很少会用到,但是用处很大,
在有些算法中会用到,在权限管理中也会经常用到,
对于理解计算机的世界也会有一定的帮助,所以得把这些重要但不常用的东西最后提醒一下大家记录一下.
提到位运算,避不开的是二进制.
因为位运算是直接在内存做操作和运算,相较与直接拿两个变量做运算符肯定是更快的.
很多地方把二进制这玩意说得很晦涩,现在来以最简单的方式来最后提醒一下大家,当然只算 int 范围内的数算了,超过了这个范畴程序员还不如拿这时间去学点别的.
说完以上总结,再来解释下什么是二进制,网上大把,
但只要记住,int范围内的数也就是我们大部分需要用到的数,都可以用二进制来表示.
我们生活中用到的计数方式为十进制,由个数位满10进1,
原码反码补码都一个样.
①.的原码:00000000 00000000 00000000 00000001
再来解释下负数的原码反码和补码,就开始讲php的位运算了.
二进制复习完毕.下面开始讲讲php的位运算.
php一共有六种位运算,一种一种来讲.
可以得出另外一个数,这个数字的组成由比较的两位数字生成,
如果两个数的每个位数上的数字都等于1的话,
那得到的那个数的补码的同位为1,否则为0.
听着绕口,其实很简单,觉得还是比官网上的更容易让新手看懂
下面举例子:
两个补码都有了下面开始运算:
其实就是和按位与相反,只要有1个为1,那就为1,如果都不为1,那就为0.
就是将这个数的补码全部翻转过来,包括符号位,0变1,1变0
取反的结果一定是整数变负数负数变正数,取正数的反时,
记得一定要从补码一步步转到原码再转成十进制数才是答案.
两个数的补码比较,同等位上的两数比较
,不一样时,则答案的补码的同位则为1,否则为0.
往左移符号位被挤走右边0补充,往右移动,符号位不动,
不吹牛逼的说,这应该是互联网上最容易理解的php位运算的解释和二进制的解释了.
原文链接: php的位运算总结-PHP
二进制字符串是
字节字符串.非二进制字符串是字符字符串
这个体现在
mysql数据库
中为:
BINARY和VARBINARY类类似于CHAR和VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串.也就是说,它们包含字节字符串而不是字符字符串.这说明它们没有
字符集
,并且排序和比较基于列值字节的数值值.
BLOB
列被视为二进制字符串(字节字符串).TEXT列被视为非二进制字符串(字符字符串).
可以的.
可以用一个十进制二进制的函数decbin(),生成的是一个字符串,直接输出即可