#include
#define debug
//debug時需要開啟
#ifndef debug
#define deb(format, ...) while(0)
#endif
#ifdef debug
#define deb(format, ...) printf(format, ##__va_args__)
#endif
#define set_nth_bit(x, n) (x| ((1u)<<(n)))
//定義這個巨集用來特定位置1,x為要操作的數,n為第幾位。(從0開始)
#define clear_nth_bit(x, n) (x& ~((1u)<<(n)))
//特定位清0
#define getbits(x, n, m) ((x& (~((~0u)<<(m-n+1))<<(n)))>>(n))
//擷取變數的部分連續位
intmain()
#define getbits(x, n, m) ((x& (~((~0u)<<(m-n+1))
這個巨集表示取出x的n-m位
首先構造乙個(m-n+1)個1,可以由全1左移(m-n+1)後取反得到
然後將得到的值左移n位,與x位或,可提取出這幾位
最後右移n位即可取出這幾位的值
2 C語言位操作
常用位操作 在這裡插入描述 位異或 兩位都相等,結果為0,不相等則為1 左移位 將乙個運算元的各二進位制全部左移若干位,左邊移除出去的二進位制位丟棄,右邊的二進位制位補0。每進行一次左移位操作,得到的結果是原來運算元的一倍 x n x 2 n 位操作與暫存器 暫存器的操作 1 暫存器特定位的清零用 ...
練習2 c 基礎
1 using system 2using system.collections.generic 3using system.linq 4using system.text 56 namespace724 else 2528 29if pass 123456 3033 else 3437 3839 ...
C語言高階篇 2 C語言位操作
1 位操作符 1 位與 2 位或 3 位取反 4 位異或 位與 位或 位異或的特點總結 位與 任何數,其實就是1或者0 與1位與無變化,與0位與變成0 位或 任何數,其實就是1或者0 與1位或變成1,與0位或無變化 位異或 任何數,其實就是1或者0 與1位異或會取反,與0位異或無變化 2 左移位 與...