### 右移运算
例如15的二进制为1111,若15右移3位,即15 >> 3,此时1111向右移动3为变成了1,即2的0次方等于1,所以15 >> 3 = 1;
同理:15右移2位,即15 >> 2, 此时1111变成11,即2的一次方 + 2的0次方 = 3;所以15 >> 2 = 3
左移也是同样的计算方式
#### 这样有什么用呢??
比如,一个字节有八位,你想知道某个位的值,就可以用右移运算了
### 常用进制转换
|十进制|八进制|二级制|
|:---:|:---:|:---:|
|1|01|0000 0001|
|2|02|0000 0010|
|4|04|0000 0100|
|8|010|0000 1000|
|16|020|0001 0000|
|32|040|0010 0000|
|64|0100|0100 0000|
|128|0200|1000 0000|
|256|0400|1 0000 0000|
|512|1000|10 0000 0000|
### 按位与或运用
- 按位或: 可以设置多个选项
- 按位与: 可以检测是否设置该选项
```c
int a = 1;
int b = 2;
int c = 4;
int d = 8;
int n = a | d;
if ((n & a) == a) {
echo "yes";
}
if ((n & c) == c) {
echo "no";
}
```
或者用八进制表示如下:
```c
int a = 01;
int b = 02;
int c = 04;
int d = 010;
int n = a | d;
if ((n & a) == a) {
echo "yes";
}
if ((n & c) == c) {
echo "no";
}
```
以上例子只能是1,2,4,8这样特殊规律的数字;在C语言中,0开头的数字表示为八进制
### 按位与&的用途
例如某个数和二进制0000 1111做按位与计算的话,能够获得某个数后四位的值
- php
- 编译安装
- 基本概念
- 垃圾回收机制
- 生命周期
- zval底层实现
- c扩展开发
- gdb调试工具
- 自定义扩展简单demo
- 钩子函数
- 读取php.ini配置
- 数组
- 函数
- 类
- yaf扩展底层源码
- swoole扩展底层源码
- memoryGlobal内存池
- swoole协程使用记录
- 单点登录sso原理
- compser使用
- session实现机制
- c & linux
- gcc
- 指针
- 结构体,联合和位字段
- 宏定义井号说明
- printf家族函数和可变参数
- 共享函数
- 静态库和动态库
- makefile自动化构建
- 信号一
- 信号二
- inotify监控文件事件
- socket编程
- 简介
- UNIX DOMAIN
- Internet DOMAIN
- TCP/IP
- 文件IO多路复用
- 内存管理
- 进程组,会话和控制终端
- daemon守护进程
- 多进程
- 多线程
- 常用进制转换
- go
- 入门知识
- 字节和整数装换
- python
- redis
- 应用场景
- 消息队列
- 热点数据
- 扫码登录
- 订阅发布
- 次数限制
- 抢购超卖
- 持久化机制
- mysql
- 工作流程
- MyISAM和InnoDB区别
- 用户和权限管理
- 执行计划
- sql优化
- 事务和锁
- 慢查询日志
- case...when...then...end用法
- sql
- 参考
- linux
- 内核参数优化
- 防火墙设置
- docker
- docker入门知识
- 算法
- 多维数组合
- DFA算法
- 红包金额分配