C#基础:%、&&、||、!、&、|、~这些符号的含义
1、先来讲%符号,这个符号叫取余。
从字面意思来看,就是取余数。
实际上也是这个意思,我们来看代码。
从图中可以看到,
15可以被3整除,所以15%3等于0。
16除以3余1,所以15%3等于1。
2、下面三个是逻辑运算符。
&&:逻辑与。
||:逻辑或。
!:逻辑非。
逻辑运算符是对真与假的组合判断,
我们写代码测试一下。
先来看逻辑与。
3、从输出结果上,我们可以看出。
&&运算两边,只要有一个假,
最后的结果就是假。
这就相当于日常生活中的“并且”。
事件1 并且 事件2。 两件事都为真,
结果才是真的。
4、下面来看逻辑或,
测试代码如下。
5、从输出结果来看,
||两边,只要有一个为真,
最后结果就为真。
这就相当于日常生活中的“或者”。
事件1 或者 事件2.
只要有一个成立,最后结果就是成立。
6、下面来看逻辑非。
跟上面两个不同,逻辑非是单目运算符。
单目运算符就是只需要一个参数。
只对一个True或者False做逻辑非的运算。
下面看测试代码:
7、从测试结果来看,
True逻辑非完之后是False。
False逻辑分完之后是True。
可以看到就是对参数进行了取反的操作。
8、下面三个运算符是位操作。
&:按位与。
|:按位或。
~:按位取反。
什么是位操作呢,我来说一下。
计算机中的数字都是按二进制存储的,
比如5这个数,计算机里存的是0101。
位操作就是直接对0、1进行的操作。
下面先看按位取反操作符。
测试代码如下:
9、下面分析输出结果:
~0x55 = 0xAA
0x55的二进制是 01010101
0xAA的二进制是 10101010
可以发现,
按位取反就是把原来是0的地方变成1,原来是1的地方变成0。
10、下面在再看按位与,
测试代码如下:
11、下面分析输出结果。
0x55 01010101
& 0x43 01000011
-----------------------
= 0x41 01000001
可以发现,如果相同位数两个都是1,输出结果就为1.
只要有一个是0,输出结果就为0。
另一种说法是
0/1 按位与上1 都不变。
0/1 按位与上0 都变为0。
这就是按位与的效果。
通过这个特点,可以用按位与做一些特殊操作。
比如把某些位变成0。
举个例子:某一个数 0xXX,我想让他的高四位变成0.
就可以这样操作,0xXX & 0x0F。结果就是0x0X。
12、下面看按位或。
测试代码如下:
13、下面分析输出结果。
0x55 01010101
& 0x43 01000011
----------------------
= 0x57 01010111
可以发现,
相同位只要有一个是1,结果就是1。
只有两个都是0的时候,结果才是0。
另一种说法是
0/1 按位或上0 都是不变。
0/1 按位或上1 都变为1。
比如我想把一个数的高四位都变成1,
就可以这样操作,0xXX | 0xF0。
输出结果就是0xFX。