位运算部分,之前没有深入做过应用。所以在这里回顾
下面的代码做了一些中间步骤的转换,打印出a值的变化。
a := 7
a = a &^ Readable : 0110 // 置零运算结果完全理解,但老师讲到这个是为了把R权限消掉,这样对应的话,可读位是指最后一位吗?让我想到Linux权限位rwx,是不是我错误的联想了?有点混淆。
a = 7
a = a &^ Executable: 0011
a = 7
a = a &^ Writable : 0101
func TestBitClear(t *testing.T) {
a := 7
t.Logf("%04b\t%04b\t%04b\t%04b", a, Readable, Writable, Executable) //0111 0001 0010 0100
t.Logf("%04b\t%04b\t%04b\t%04b", a, a&Readable, a&Writable, a&Executable) //0111 0001 0010 0100
t.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable) // true true true
a = a &^ Readable
t.Logf("%04b\t%04b\t%04b\t%04b", a, a&Readable, a&Writable, a&Executable) //0110 0000 0010 0100
t.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable) // false true true
a = 7
a = a &^ Executable
t.Logf("%04b\t%04b\t%04b\t%04b", a, a&Readable, a&Writable, a&Executable) //0011 0000 0010 0000
t.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable) // false true false
a = 7
a = a &^ Writable
t.Logf("%04b\t%04b\t%04b\t%04b", a, a&Readable, a&Writable, a&Executable) //0101 0000 0000 0000
t.Log(a&Readable == Readable, a&Writable == Writable, a&Executable == Executable) // false false false
}
展开