第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Go 中修改位?

如何在 Go 中修改位?

Go
慕神8447489 2022-11-08 16:28:08
我試圖在某個位置修改位,但遇到了問題。例如我有1000000001,我該如何修改它0000000001?
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經(jīng)驗 獲得超5個贊

您可以應(yīng)用位掩碼以僅保留您感興趣的位。


在這種情況下,如果您只想要最后一位,則應(yīng)用位掩碼0b0000000001


https://go.dev/play/p/RNQEcON7sw1


    // 'x' is your value

    x := 0b1000000001

    // Make the bitmask

    mask := 0b0000000001

    // Apply the bitmask with bitwise AND

    output := x&mask

    fmt.Println("This value == 1: ", output) 

解釋

&是“AND”的位運算符。這意味著它逐位遍歷這兩個值,并將結(jié)果位設(shè)置為1當(dāng)且僅當(dāng)兩個輸入位都是1. 我在下面為 AND 運算符提供了一個真值表。


+-----------+----------+--------------+

| Input Bit | Mask Bit | Input & Mask |

+-----------+----------+--------------+

|         0 |        0 |            0 |

|         0 |        1 |            0 |

|         1 |        0 |            0 |

|         1 |        1 |            1 |

+-----------+----------+--------------+

因為我的掩碼函數(shù)1在最后一個位置只有a,所以只保留原始輸入的最后一個位置。所有前面的位將始終為0.


查看完整回答
反對 回復(fù) 2022-11-08
?
動漫人物

TA貢獻1815條經(jīng)驗 獲得超10個贊

  1. 構(gòu)建一個面具,在您想要操作的每個地方都有一個面具

  2. 使用按位或設(shè)置位。

  3. 使用按位 AND 和反向掩碼來清除位。

  4. 使用 XOR 切換位

package main


import "fmt"


func main() {

    k := 3                      // manipulate the 3rd bit ...

    mask := uint8(1) << (k - 1) // ... using 0b00000100 as a mask


    var n uint8 = 0b10101010

    fmt.Printf("0b%08b\n", n) // 0b10101010


    // set kth bit

    n |= mask

    fmt.Printf("0b%08b\n", n) // 0b10101110


    // clear kth bit

    n &^= mask                // &^ is Go's AND NOT operator

    fmt.Printf("0b%08b\n", n) // 0b10101010


    // toggle kth bit

    n ^= mask

    fmt.Printf("0b%08b\n", n) // 0b10101110

}


查看完整回答
反對 回復(fù) 2022-11-08
?
catspeake

TA貢獻1111條經(jīng)驗 獲得超0個贊

func test() {

    i := 1 << 9 //1000000000


    i = i | (1 << 8) //1000000000 | 0100000000 == 1100000000

    i = i | (1 << 7) //1100000000 | 0010000000 == 1110000000

    i = i | (1 << 0) //1110000000 | 0000000001 == 1110000001


    fmt.Printf("BEFORE: %010b\n", i) // 1110000001


    i = i & ((1 << 9) - 1) // 1110000001 & ((1000000000) - 1) == 1110000001 & (0111111111) == 0110000001


    fmt.Printf("AFTER: %010b\n", i) // 0110000001

}


查看完整回答
反對 回復(fù) 2022-11-08
  • 3 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號