C語言第五篇:位運算
一、概念辨析:區分C語言中的邏輯運算和位運算
1、邏輯運算:
C語言中提供了三種邏輯運算子:
- && 與運算 雙目運算子 左結合性
- || 或運算 雙目運算子 左結合性
- ! 非運算 單目運算子 右結合性
應用場合:用於條件語句
2、位運算:
C語言提供了六種位運算子:
- (1) & 按位與
- (2) | 按位或
- (3) ^ 按位異或
- (4) ~ 取反
- (5) << 左移
運演算法則:x << y——將x左移y位,將x最左邊的y位丟棄,在右邊補y個0。對於signed和unsigned是相同的
- (6) >> 右移
運演算法則:x >> y——將x右移y位,這需要區分x是有符號數還是無符號數,具體情況如下:
- a、在x是無符號數時,只需將x的最右邊的y位丟棄,在左邊補上y個0;
- b、在x是有符號正數時,同無符號數的處理相同;
- c、在x是有符號負數時,將將x的最右邊的y位丟棄,在左邊補上y個1。
應用場合:用於二進位制運算
3、邏輯運算和位運算的區別(以邏輯與和按位與為例)
對於兩個邏輯量,都是一樣的;
對於兩個整型量,就不一樣了,例如,對2和1進行邏輯與和按位與運算:
- 2&&1=1
- 2&1=0
二、位運算的使用
1、優秀程式設計師不得不知的20個位運算技巧
在本篇部落格所舉得例子中,完成相應功能的C語言程式碼都僅僅是一行位運算搞定。此處僅列出標題,以對該片博文的作者致敬。
- (1)獲得int型最大值
- (2)獲得int型最小值
- (3)獲得long型最大值
- (4)乘以2運算
- (5)除以2運算
- (6)乘以2的m次方
- (7)除以2的m次方
- (8)判斷一個數的奇偶性
- (9)不用臨時變數交換兩個數
- (10)取絕對值
- (11)取兩個數的最大值
- (12)取兩個數的最小值
- (13)判斷符號是否相同
- (14)計算n的二次方
- (15)判斷一個數是不是2的冪
- (16)對2的n次方取餘
- (17)求兩個整數的平均值
- (18)從低位到高位,取n的m位
- (19)從低位到高位,將n的第m位置1
- (20)從低位到高位,將n的第m位置0
- (21)另:計算n+1,計算n-1,取相反數,
- (22)sign函式,引數為n,當n>0時候返回1,n<0時返回-1,n=0時返回0。
另一篇參考博文:C/C++位運算技巧
2、位運算實現加法
相關文章
- C語言位運算C語言
- C語言學習筆記——位運算C語言筆記
- 關於C語言的位運算子C語言
- C語言位操作C語言
- 逍遙自在學C語言 | 算數運算子C語言
- c語言關於陣列的簡單運算C語言陣列
- C語言程式設計-長整數加法運算C語言程式設計
- 複數的四則運算(C語言實現)C語言
- C語言學習筆記之指標的運算C語言筆記指標
- C語言基礎-1、邏輯型別和運算C語言型別
- C語言位運算子知識總結和例項分析C語言
- 逍遙自在學C語言 | 位運算子&的高階用法C語言
- 逍遙自在學C語言 | 位運算子的基礎用法C語言
- 逍遙自在學C語言 | 位運算子^的高階用法C語言
- C# 位運算及例項計算C#
- c語言運算子詳解C語言
- (C語言) int型之間除法運算,向零取整C語言
- C語言入門學習記錄(4)之比較運算C語言
- C語言用三目運算實現判斷大寫C語言
- 《零基礎看得懂的C語言入門教程 》瞭解C語言的邏輯運算C語言
- C語言程式設計入門之--第五章C語言基本運算和表示式-part2C語言程式設計
- C語言學習筆記--C運算子C語言筆記
- 逍遙自在學C語言 位運算子 "|" 的5種高階用法C語言
- C語言:迴文數計算C語言
- 二進位制、位運算、位移運算
- C++除法運算 // 靜態斷言C++
- C語言練手專案--C 語言製作簡單計算器C語言
- 位運算
- C語言運算子優先順序C語言
- c語言-運算子,陣列,指標C語言陣列指標
- C 語言運算子優先順序
- 初學計算機語言者(C語言,C++,java,pytion,C#)計算機C語言C++JavaC#
- C語言進位制轉換與列印C語言
- 位運算 --20240310
- 理解位運算
- C語言高效程式設計的四大祕技之使用位操作,減少除法和取模的運算C語言程式設計
- C語言運算子深度解析--超詳細C語言
- 使用位運算進行加法運算
- C語言C語言