package main
import (
"fmt"
"math/rand"
)
var (
dword uint = 32
shift uint = 5
mask uint = 0x1F
)
func newInt(vmax uint)[]uint {
var ret []uint
var vlen uint = 0
if vmax%dword == 0{
vlen = vmax/dword
}else{
vlen = vmax/dword+1
}
ret = make([]uint,vlen)
return ret
}
func setBit(v uint,ba []uint) {
k := (v>>shift)
ba[k] |= (1<<(v&mask))
}
func clsBit(v uint,ba []uint) {
k := (v>>shift)
ba[k] = ba[k]&(^(1<<(v&mask)))
}
func flgBit(v uint,ba []uint)uint {
k :=(v>>shift)
return (ba[k]&(1<<(v&mask)))
}
func main(){
var at [10]uint
for x:= 0;x < 10;x++{
at[x] = uint(rand.Intn(50))+uint(rand.Intn(50))
fmt.Printf("at[%d] =%d\n",x,at[x])
}
tar := newInt(100)
var i uint
var j uint
var m uint
for i=1;i <=100;i++ {
clsBit(i,tar)
}
for j=0;j < 10;j++ {
setBit(at[j],tar)
}
for m=1;m <= 100;m++{
f := flgBit(m,tar)
if f != 0{
fmt.Printf("bit order : %d\n",m)
}
}
}
运行结果: