2 c練習 位操作

2021-10-06 21:25:09 字數 741 閱讀 3597

#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 左移位 與...