<1>二进制与十进制互转
十进制转二进制
例子:13 -> 1101
13/2=6余1
6/2=3余0
3/2=1余1
1/2=0余1
那么13用二进制表示为 1101 (倒序排列余数 不足的用0补齐 00001101)
二进制转十进制
例子:1101 -> 13 可以在C#里面声明为 int num = 0b1101 或者 string num = "00001101"
补齐00001101
13 = 0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = 0+0+0+0 +8+4+0+1
<2>位运算
~ 逻辑非运算 00001101 -> 11110010 即 1取0 0取1
& 逻辑与运算 00001101&00000011 -> 00000001 即1&1取1 1&0取0 0&0取0
| 逻辑或运算 00001101&00000011 -> 00001111 即1&1取1 1&0取1 0&0取0
^ 逻辑异或运算 00001101&00000011 -> 00001110 即1&1取0 1&0取1 0&0取0 相同取0 不同取1
<< 左移运算 00001101 -> 01101000 即 把每一位向左移3位 等于把原始数字*2^3 = 13 * 2^3
>> 右移运算 00001101 -> 00000001即 把每一位向右移3位 等于把原始数字/2^3 = 13 / 2^3
<3>一个在游戏中的应用:使用0-7的二进制表示8个方向
//0 0/2 = 00 0000
//1 1/2 = 01 0001 //可以表示为Z轴
//2 10 01 0010 //可以表示为Y轴
//3 11 0 0011
//4 20 10 01 0100 //可以表示为X轴
//5 21 10 01 0101
//6 30 11 01 0110
//7 31 11 01 0111
//8 40 20 10 01 1000 与0-7做 | 运算 可以取交集
在八叉树中,可以用0-7与1,2,4做&运算 取到父节点分割8个子节点的位置关系