15、枚举类型和标志位

G常规 D十进制 X十六进制
myControl.Style =?Styles.ShowBorder |?Styles.ShowCaption;??
这时myControl.Style枚举的值将变成 1+2=3,它的ToString()将变成"Styles.ShowBorder , Styles.ShowCaption"?
这里我们可以解释为什么第三个值ShowToolbox可以为4,5..而不能为3。也就是说它的值不应该是前几项值的复合值。有一个比较简单的方法就是用2的n次方来依次为每一项赋值,例如 1,2,4,8,16,32,64.....? 原文:https://blog.csdn.net/zhouqinghe24/article/details/8243679

对于(&,|),运算的对象是位,也就是1/0,叫做位运算符
理解:0为false,1为true(通用:0表示假,所有非零的数表示真。 ######方便记忆:0,什么都没有骗人的,则为假)
运算结果只有下列四种情况。
1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
&&和&对于他们各自的运算对象来说,结果是一样的。

enum.ToString("F") //转换为标志字符串 比如Query

整数在计算机中用二进制的位来表示,C语言提供一些运算符可以直接操作整数中的位,称为位运算,这些运算符的操作数都必须是整型的。
& 按位与, | 按位或 , ^ 按位异或
AND (位与&) OR ( 位或| ) XOR ( 位异或^ )
1 & 1 = 1, 1 | 1 = 1, 1 ^ 1 = 0
1 & 0 = 0, 1 | 0 = 1, 1 ^ 0 = 1
0 & 1 = 0, 0 | 1 = 1, 0 ^ 1 = 1
0 & 0 = 0, 0 | 0 = 0, 0 ^ 0 = 0

1、位运算

直接对整数在内存中的二进制位进行操作。程序中的所有数在计算机内存中都是以二进制的形式存储的。例如,2为10, 11为1011,位操作就相当于将对应的二进制数向左移动n位,即在二进制数的右边补0,例如(6<<2)为6二进制为110,向左移动2位11000,6<<2 = 24。

2、位运算的运算方式

如上所述,6<<2的计算方式可以为,6*2^2 = 24, 6<<m为6*2^m(6 乘以 2的m次方),其原理是因为计算机内存是二进制,向左移一位,即乘以2,移动m位即相当于乘以m个2。如果想不通,可以拿十进制数想。
原文:https://blog.csdn.net/xumi13/article/details/62897708

原文地址:https://www.cnblogs.com/kikyoqiang/p/9880177.html