v0.1.20
,命令行执行v up
即可更新。
更新详情请点击查看: V语言更新日志。
bitfield
模块,用来操作二进制、位操作等。
话不多说,放码过来。
import bitfield import rand import time // 初始化 fn bf_new_size(){ instance:=bitfield.new(75) assert instance.getsize() == 75 // true } // set clear toggle get fn bf_set_clear_toggle_get(){ mut instance:=bitfield.new(75) instance.setbit(47) assert instance.getbit(47) == 1 // true instance.clearbit(47) assert instance.getbit(47) == 0 // true instance.togglebit(47) assert instance.getbit(47) == 1 // true } // and not or xor fn bf_and_not_or_xor() { rand.seed(time.now().uni) len := 80 mut input1 := bitfield.new(len) mut input2 := bitfield.new(len) mut i := 0 for i < len { if rand.next(2) == 1 { input1.setbit(i) } if rand.next(2) == 1{ input2.setbit(i) } i++ } output1 := bitfield.bfxor(input1, input2) bfand := bitfield.bfand(input1, input2) bfor := bitfield.bfor(input1, input2) bfnot := bitfield.bfnot(bfand) output2 := bitfield.bfand(bfor, bfnot) mut result := 1 for i < len { if output1.getbit(i) != output2.getbit(i) {result = 0} } assert result == 1 } // clone cmp(compare) fn bf_clone_cmp() { rand.seed(time.now().uni) len := 80 mut input := bitfield.new(len) for i := 0; i < len; i++ { if rand.next(2) == 1 { input.setbit(i) } } output := bitfield.clone(input) assert output.getsize() == len assert bitfield.cmp(input, output) == true }
bitfield
操作可参考bitfield
模块源码:V语言bitfield(位域)。
代码如有疏漏,欢迎指正。