日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用技巧 —— 位运算 —— 位运算基础

發布時間:2025/3/17 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用技巧 —— 位运算 —— 位运算基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【與運算】

與運算常用于二進制的取位操作,其用符號 & 表示,相同位的兩個數字都為1,則為1,若有一個不為1,則為0。

例如:00101 & 11100 = 00100

其會將兩個十進制數在二進制下進行與運算,然后返回其十進制下的值。

例如:3(11) & 2(10) = 2(10)

典型應用:任意一個數 &1 的結果就是取二進制的最末位,常用于判斷數的奇偶,最末位為 0 表示該數為偶數,最末位為 1 表示該數為奇數。

【或運算】

或運算常用于二進制特定位上的無條件賦值,其用符號 | 表示,相同位的兩個數字只要一個為 1 即為 1。

例如:00101 |?11100 = 11101

其會將兩個十進制數在二進制下進行或運算,然后返回其十進制下的值。

例如:3(11)|2(10)=3(11)。

典型應用:一個數 |?1 的結果就是把二進制最末位強行變成 1,如果需要把二進制最末位變成 0,對這個數 |?1 后再減一即可,其實際意義就是把這個數強行變成最接近的偶數。

【非運算】

非運算是把內存中的 0 和 1 全部取反,用符號 ~?表示。

使用非運算時要格外小心,需要注意整數類型有沒有符號,如果非運算的對象是無符號整數,那么得到的值就是它與該類型上界的差,因為無符號類型的數是用 00 到 $FFFF 依次表示的。

【異或運算】

異或運算,是對等長二進制模式按位執行邏輯按位異或操作,用符號 ^ 表示,如果某位不同則該位為 1,否則該位為 0。

例如:00101 ^?11100 = 11001

其會將兩個十進制數在二進制下進行異或運算,然后返回其十進制下的值。

例如:3(11) ^ 2(10) = 1(01)

異或運算的逆運算是它本身,也就是說兩次異或同一個數最后結果不變,即:(a ^?b) ^?b = a

【左移與右移】

1.左移運算

左移運算,用符號 << 表示,操作 a << b 就是把 a 轉為二進制后左移 b 位(在后面填充 b 個 0),實質上就是 a 乘以 2 的 b 次方,因為在二進制數后添一個 0 就相當于該數乘以 2。

例如:100(1100100) << 2 = 400(110010000)

通常認為,a <<?1 比 a*2 要更快,因為前者是更底層的操作,因此程序中乘以 2 的多少次方的操作盡量用左移位來代替。

2.右移運算

右移運算,用符號 << 表示,操作 a >> b 就是把 a 轉為二進制后右移 b 位(去掉末尾?b 個 0),實質上就是 a 除以 2 的 b 次方(取整)。

例如:400(110010000) >>?2 = 100(1100100)

通常認為,a >>?1 比 a/2 要更快,因為前者是更底層的操作,因此程序中除以?2 的多少次方的操作盡量用右移位來代替。

總結

以上是生活随笔為你收集整理的常用技巧 —— 位运算 —— 位运算基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。