二进制的学习总结
二進(jìn)制的基礎(chǔ)
and & (按位取與) 1 & 1 ?= ?1 1 & 0 = 0 0 & 0 = 0 0 & 1 = 0
or ? ?| ? ?(按位取或) 1 | 1 = 1 1 | ?0 = 1 0 | 0 = 0 0 | 1 = 0
xor ? ?⊕/^? (按位異或) 1⊕1 = 0 1⊕0 = 1 0?⊕0 = 0 0?⊕1 = 0
? lsh? << (邏輯左移)將二進(jìn)制數(shù)向左移動(dòng)x位造成二進(jìn)制數(shù)右邊不足用0補(bǔ)足,左邊高位溢出
??rsh >> (邏輯右移)將二進(jìn)制數(shù)向右移動(dòng)y位造成二進(jìn)制數(shù)左邊補(bǔ)足用0補(bǔ)足,右邊高位溢出
? not ? ?~ ??(按位取反) 每一位0變1,1變0
注意:二進(jìn)制操作的優(yōu)先級(jí)好像很低,所以進(jìn)行計(jì)算時(shí)可以多打?qū)懤ㄌ?hào)反正又不會(huì)累死
二進(jìn)制的基本操作
讀取x的第pos個(gè)二進(jìn)制位: (x >> pos)& 1;
讀取x的第pos位開始的cnt位: (x >> pos)& ((1 << cnt) - 1);
將x的第pos位置為1: (1 << pos)| x;
將x的第pos位置為0: (~(1 << pos))& x;
將x的第pos位取反: (1 << pos) ⊕?x;
將x的末尾的1提取出來: x & (x ⊕ (x + 1));
二進(jìn)制中最低位的一個(gè)1的位置: ??? lowbit(x) = x & (-x);
遍歷二進(jìn)制中所有的1的位置: for(; x; x -= lowbit(x));
判斷一個(gè)數(shù)的奇偶性: ? (x & 1) ? 偶數(shù) : 奇數(shù);
對(duì)2的冪取模 : ? x & ((1 << y)? - 1)
二進(jìn)制表示集合
枚舉子集 for(int i = x; i ; i = (i & (i - 1));
?
轉(zhuǎn)載于:https://www.cnblogs.com/2020pengxiyue/p/9322134.html
總結(jié)
- 上一篇: 事物与数据库底层数据
- 下一篇: 基于websocket单台机器支持百万连