2016-04-12 39 views

cevap

7

c için yaptığınız gibi kullanılmayan bitleri maskelemelisiniz. Ayrıca, değerlerin yanlışlıkla çakışmasını önlemek için paket işlevine maskeler ekledim:

const (
    threeBits = 0x7 
    twoBits = 0x3 
) 

func pack(a, b, c byte) byte { 
    return a<<6 | b&twoBits<<4 | c&threeBits 
} 

func main() { 
    v := pack(1, 2, 6) 
    a := v >> 6 
    b := v >> 4 & twoBits 
    c := v & threeBits 
    fmt.Println(v, a, b, c) 
} 
+0

Siz adam @JimB! – OneOfOne

+2

Ayrıca maske, alan genişliği ile belirtilen her zaman izin verilen en yüksek değerdir. 2 bit geniş alan => maske 3'tür. – nemo