进制

四种进制

10 进制 decimal 简写:dec
16 进制 hexadecimal 简写:hex
8 进制 octonary 简写:oct
2 进制 binary 简写:bin
生活中常用 10 进制
计算机常用 2 进制 ,8 进制 ,16 进制

10 进制
... 万位 千位 百位 十位 个位 (满10进1)

 9     9    9     9    9

echo 123 ,'

'; //从右到左 3个位,分别时以 1顶1,以1顶10,以1顶100
echo 13 + 102 + 100*1 , '

';
8 进制(满8进1)

8进制,前导 0 代表8进制
在数字前加0,可以让php将这个数字按照8进制来理解,输出这个数的10进制结果

echo 0123, '

'; //从右到左 3 个位,分别是以 1顶1,以 1顶8,以 1顶64
echo 027, '

'; //23
echo 028, '

';//2 , 当出现不合法值,后面的值会忽略
16 进制(满16进1)

16进制,前导 0x 代表16进制,0 1 2 3 4 5 6 7 8 9 a b c d e f

echo 0x123 , '

';//从右到左 3 个位,分别是以 1顶1,以 1顶16, 以 1顶256
echo 0x1c , '

';//28
2 进制(满2进1)

2进制,PHP从5.4版本开始,可以直接写2进制数 由0/1组成
前导 0b 代表2进制

//从右到左,分别以 1顶1,以 1顶2, 顶4, 顶8, 顶16 .....
echo 0b0011; //3
echo 0b01100; //12
10 进制转换其他进制,除以该进制,直到除尽或除不尽即可
133 转 2 进制
__
2 | 133
__
2 | 66 余1
__
2 | 33 余0
__
2 | 16 余1
__
2 | 8 余0
__
2 | 4 余0
__
2 | 2 余0
__
| 1 余0

0b10000101

133 转 8 0205
133 转 16 0x85
PHP位运算

一个字节有8个位,我们将这8个位来进行运算,就叫位运算
位运算 是针对字节上的位来进行运算
位运算符: & | ^ ~ >> <<
位上有 1/0,如果将 1/0 当真假来看,1是真 0是假
& 逻辑与
5 0000 0101
12 0000 1100
&-------------

 0000 0100

echo 5 & 12; //4
| 逻辑或
5 0000 0101

12 0000 1100
0000 1101
echo 512; //13

^ 逻辑异或

逻辑异或,两者不一样则为真 一样为假

5 0000 0101
12 0000 1100
^-------------

 0000 1001

echo 5 ^ 12; //9
~ 逻辑反

逻辑反,只能求一个字符,就是 1->0 , 0->1

5 0000 0101
~-------------

 1111 1010

echo ~5; //-6
PHP 的 int 型则是有符号的
取决于8个位的 最左面的位(最高位) 是否为1
如果为 1 则是 负数 -1~-128
如果为 0 则是 整数 0~127

<< >> 位运算

<< 按位左移 空位补0

按位右移 空位补0

5 0000 0101
<<------------

 0000 1010

echo 5<<1; //10

5 0000 0101


 0000 0010

echo 5>>1; //2

2 进制,左移一位增大2倍

将一个数快速的增大8倍

echo 2<<3; //16
按位移动比乘法要快,计算机最后是存储2进制的,省了转换

标签: none

评论已关闭