### 右移運算
例如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算法
- 紅包金額分配