按位与& 运算符
1.按位与运算符“&”是双目运算符。
2.其功能是参与运算的两数各对应的二进位相与。
3.只有对应的两个二进位都为1时,结果位才为1。
4.千万不要与 && 混淆
首先把数转换为2进制
比如:
10 二进制为:1010
11 二进制为:1011
~~~~~
1
~~
0
~~
1
~~
0
~~~~~
1
~~
0
~~
1
~~
1
&
~
————————
~~~~~
1
~~
0
~~
1
~~
0
注意:有对应的两个二进位都为1时,结果位才为1
~~~~~
1
~~
0
~~
1
~~
0
~~~~~~~~~~~~~~~~~~~~~~
1
&
~
————————
~~~~~~~~~~~~~~~~~~~~~~
0
“与运算”的特殊用途:
清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
取一个数中指定位
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
例:设X=10101110,
取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;
还可用来取X的2、4、6位。
Verilog中不同位宽的无符号数和有符号之间赋值的截断和扩展问题
逻辑与&& 运算符,逻辑与是短路操作符
逻辑与和短路与的区别:
逻辑与的判断方式是:
从左到右依次判断,直到结尾(逻辑全程运算)
短路与的判断方式是:
从左到右依次判断,直到出现false为止将不再判断,直接得到结果为false(短路遇false就停)
1&&2转换二进制1&&0010
1为true,2>0为true,故1&&0010=1;
console.log(a && 0); // ReferenceError: a is not defined
console.log(0 && a); //0, 因为是短操作符,第一个操作符0为false,第二个操作符不会执行(这里的变量a未定义)
console.log(2 && 1); //1,第一个操作数2是true,会计算第二个操作数,返回第二个操作数1
console.log(0 && 2); //0,第一个操作数0是false,直接返回0,不会管第二个操作数
console.log(2 && 0); //0,第一个操作数2是true,会计算第二个操作数
console.log(2 && 3); //3,第一个操作数2是true,会计算第二个操作数,第二个操作数3是true,返回3
console.log(NaN && NaN); //NaN,第一个操作数是NaN,不会管第二个操作数
console.log(null && null); //null,第一个操作数时null,不会管第二个操作数
console.log(undefined && undefined); //undefined,第一个操作数时undefined,不会管第二个操作数