C++ 11 深度学习(七)位运算常见操作
生活随笔
收集整理的這篇文章主要介紹了
C++ 11 深度学习(七)位运算常见操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 取出數中任意k位置的二進制位是0還是1
n >> k & 1 原理:先把想要取出的位置移動到個位,1的二進制是 0001 , 進行與操作就可以提取出最后一位是0還是1;二進制是從右向左,由低到高,從0到7。
2. 右移操作 等于 n / 2^k , 左移操作 == n * 2 ^ k
3.取一個字節任意區間的十進制數,設置(輔助字節)全部位設置為0,根據想要獲取的目標字節的區間,設置(輔助字節二進制位)中的對應區間部分,全部換成1,然后轉為16進制。做&操作,按位與的結果就是目標自己區間的十進制表示形式。例如 0x67 & 0x1f = 7 ,01100111 & 00011111 (從0x67中取出該字節0-4后五位十進制表示)【注意:二進制的左邊是高位,右邊是低位,所以需要進行右移操作將需要獲取的部門與最低位重合】例如0x80二進制位1000 0000 取出10的十進制操作為0x80 & 0xC0 >> 6
4.兩個字節合并成一個16位short類型
unsigned short func = 0;func = func | data[7]; func = func << 8; func = func | data[8];5.lowbit
作用:取出二進制最后的1,例如整數2的二進制位是0010那么會取出10的部分。
應用:統計有多少個1。
思路:使用給定整數減去其中的最后一位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; }?
?
總結
以上是生活随笔為你收集整理的C++ 11 深度学习(七)位运算常见操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oppor7网络连接电脑连接(oppo怎
- 下一篇: 极客湾电脑显卡天梯图(显卡天梯极客空间)