久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      淺析Golang中的的位操作(按位運(yùn)算符)

      淺析Golang中的的位操作(按位運(yùn)算符)

      在計(jì)算機(jī)內(nèi)存昂貴,處理能力有限的美好舊時(shí)光里,用比較黑客范的位運(yùn)算方式去處理信息是首選方式(某些情況下只能如此)。時(shí)至今日,直接使用位運(yùn)算仍然是很多計(jì)算領(lǐng)域中不可或缺的部分,例如底層系統(tǒng)編程,圖形處理,密碼學(xué)等。

      Go 編程語言支持以下按位運(yùn)算符:

      &   bitwise AND  |   bitwise OR  ^   bitwise XOR &^   AND NOT <<   left shift >>   right shift
      登錄后復(fù)制

      本文的余下部分詳述了每個(gè)操作符以及它們?nèi)绾问褂玫陌咐?/p>

      & 運(yùn)算符

      在 Go 中, & 運(yùn)算符在兩個(gè)整型操作數(shù)中執(zhí)行按位 AND 操作。AND 操作具有以下屬性:

      Given operands a, b AND(a, b) = 1; only if a = b = 1                else = 0
      登錄后復(fù)制

      AND 運(yùn)算符具有選擇性的把整型數(shù)據(jù)的位清除為 0 的好的效果。 例如,我們可以使用 & 運(yùn)算符去清除(設(shè)置)最后 4 個(gè)最低有效位(LSB)全部為 0 。

      func main() {     var x uint8 = 0xAC    // x = 10101100     x = x & 0xF0          // x = 10100000 }
      登錄后復(fù)制

      所有的位運(yùn)算都支持簡(jiǎn)寫的賦值形式。 例如,前面的例子可以重寫為如下。

      func main() {     var x uint8 = 0xAC    // x = 10101100     x &= 0xF0             // x = 10100000 }
      登錄后復(fù)制

      另外一個(gè)巧妙的技巧是:你可以用 & 操作去測(cè)試一個(gè)數(shù)字是奇數(shù)還是偶數(shù)。原因是當(dāng)一個(gè)數(shù)字的二進(jìn)制的最低位是 1 的時(shí)候,那他就是奇數(shù)。我們可以用一個(gè)數(shù)字和 1 進(jìn)行 & 操作,然后在和 1 做 AND 運(yùn)算,如果的到的結(jié)果是 1 ,那么這個(gè)原始的數(shù)字就是奇數(shù)

      import (     "fmt"     "math/rand" ) func main() {     for x := 0; x < 100; x++ {         num := rand.Int()         if num&1 == 1 {             fmt.Printf("%d is oddn", num)         } else {             fmt.Printf("%d is evenn", num)         }     } }
      登錄后復(fù)制

      在 Playground 上運(yùn)行上面的例子

      | 操作符

      | 對(duì)其整型操作數(shù)執(zhí)行按位操作?;叵胍幌?code>或操作符具備以下性質(zhì):

      Given operands a, b OR(a, b) = 1; when a = 1 or b = 1               else = 0
      登錄后復(fù)制

      我們可以利用按位操作符為給定的整數(shù)有選擇地設(shè)置單個(gè)位。例如,在如下示例中我們使用按位將示例數(shù)(從低位到高位(MSB))中的第 3 ,第 7 和第 8 位置為 1 。

      func main() {     var a uint8 = 0     a |= 196     fmt.Printf("%b", a) }  // 打印結(jié)果  11000100             ^^   ^
      登錄后復(fù)制

      練習(xí)場(chǎng)中可運(yùn)行范例。

      在使用位掩碼技術(shù)為給定的整型數(shù)字設(shè)置任意位時(shí),運(yùn)算非常有用。例如,我們可以擴(kuò)展之前的程序?yàn)樽兞?a 存儲(chǔ)的值設(shè)置

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)