【位运算】代码中的常用操作
生活随笔
收集整理的這篇文章主要介紹了
【位运算】代码中的常用操作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:力扣(LeetCode)
鏈接:https://www.zhihu.com/question/38206659/answer/736472332
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
位運算
- 1.【乘除2】
- 2.【交換兩個數】
- 3.【判斷奇偶性】
- 4.【正數變成負數,負數變成正數】
- 5.【求絕對值】
- 6.求高低位交換
- 7.二進制逆序
- 8.統計二進制中 1 的個數
- 9.【取模運算】
1.【乘除2】
int a = 2; a >> 1; //【表示除2】 a << 1; //【表示乘2】2.【交換兩個數】
void swap(int a, int b) {a ^= b;b ^= a;a ^= b; }3.【判斷奇偶性】
if((a & 1)==0) //偶數 if((a & 1)==1) //奇數4.【正數變成負數,負數變成正數】
int reversal(int a) {return ~a + 1; }5.【求絕對值】
int abs(int a) {int i = a >> 31;return i == 0 ? a : (~a + 1); } int abs2(int a) {int i = a >> 31;return ((a^i) - i); }6.求高低位交換
unsigned short a = 34520; a = (a >> 8) | (a << 8);7.二進制逆序
unsigned short a = 34520; a = ((a & 0xAAAA) >> 1) | ((a & 0x5555) << 1); a = ((a & 0xCCCC) >> 2) | ((a & 0x3333) << 2); a = ((a & 0xF0F0) >> 4) | ((a & 0x0F0F) << 4); a = ((a & 0xFF00) >> 8) | ((a & 0x00FF) << 8);8.統計二進制中 1 的個數
count = 0 while(a) { a = a & (a - 1); count++; }9.【取模運算】
a需>0且b為2的倍數
a % b == >a & (b - 1)需n<2m
n%m ==> n-(m>n?0:m)總結
以上是生活随笔為你收集整理的【位运算】代码中的常用操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 扬州大学复试1301软件工程【期末复习p
- 下一篇: 【栈】【20. 有效的括号】【简单】