C++ 11 深度学习(七)位运算常见操作
1. 取出數(shù)中任意k位置的二進(jìn)制位是0還是1
n >> k & 1 原理:先把想要取出的位置移動到個位,1的二進(jìn)制是 0001 , 進(jìn)行與操作就可以提取出最后一位是0還是1;二進(jìn)制是從右向左,由低到高,從0到7。
2. 右移操作 等于 n / 2^k , 左移操作 == n * 2 ^ k
3.取一個字節(jié)任意區(qū)間的十進(jìn)制數(shù),設(shè)置(輔助字節(jié))全部位設(shè)置為0,根據(jù)想要獲取的目標(biāo)字節(jié)的區(qū)間,設(shè)置(輔助字節(jié)二進(jìn)制位)中的對應(yīng)區(qū)間部分,全部換成1,然后轉(zhuǎn)為16進(jìn)制。做&操作,按位與的結(jié)果就是目標(biāo)自己區(qū)間的十進(jìn)制表示形式。例如 0x67 & 0x1f = 7 ,01100111 & 00011111 (從0x67中取出該字節(jié)0-4后五位十進(jìn)制表示)【注意:二進(jìn)制的左邊是高位,右邊是低位,所以需要進(jìn)行右移操作將需要獲取的部門與最低位重合】例如0x80二進(jìn)制位1000 0000 取出10的十進(jìn)制操作為0x80 & 0xC0 >> 6
4.兩個字節(jié)合并成一個16位short類型
unsigned short func = 0;func = func | data[7]; func = func << 8; func = func | data[8];5.lowbit
作用:取出二進(jìn)制最后的1,例如整數(shù)2的二進(jìn)制位是0010那么會取出10的部分。
應(yīng)用:統(tǒng)計有多少個1。
思路:使用給定整數(shù)減去其中的最后一位1。
#include <iostream> using namespace std;int lowbit(int x) {return x & -x; }int main() {int x;cin >> x;int res = 0;while (x) x -= lowbit(x), res++;cout << res << endl;return 0; }?
?
總結(jié)
以上是生活随笔為你收集整理的C++ 11 深度学习(七)位运算常见操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oppor7网络连接电脑连接(oppo怎
- 下一篇: C++ 11 深度学习(八)重定义ove