按位与是针对两个两个二进制数的运算,要求两个二进制数位数相同;而逻辑运算与是针对逻辑电平的与运算,可以简单地理解为1位二进制的按位与运算。
具体来说,逻辑电平永远只有一位,而对于二进制数流来说,可以有多位数,所以,二者在运算上的本质区别是与运算位数的区别,而实际使用的区别是前者多为数据处理,后者多为条件判断(Verilog中对某信号的判断)!
例:
按位与运算:A=1010;B=1001;则A&B=1000;即单独对每一个相同的位进行与运算;
逻辑运算与:L1=1;L2=0;L1&&L2=0。
Loonie啊,你什么时候才能回答认真点啊... 还是你给自己挂那么多牌就是为了糊弄人方便啊...
首先一点位运算的运算单位是位,逻辑运算的单位是整个数值。
位运算是根据操作数的每一位是否为0决定结果的对应位是否为0
0011 | 1010 -> 1011
逻辑运算是根据操作数整体数值是否为0决定结果是1还是0
1111 || 0000 -> 1, 0000 || 0000 -> 0, 0000 || 0010 -> 1
另外逻辑运算还一个重要特性就是,会截断求值过程:
f() || g()
这里如果f()返回值不等于0,整个表达式结果就必然是1,于是就不会执行g()。这个相当于:
if (!f())
{
if (g())
{
return 1;
}
}
else
{
return 1;
}
return 0;
这么个东西
位运算,就是用二进制,左移,右移,与,或,非那样的
逻辑运算,就是用等式表示判断,把推理看作等式的变换,比如等于,大于,小于什么的.
位运算中有"|,&",逻辑运算中是"||,&&"
|,&是用二进制算,结果可能是任意值
||,&&是根据两边的表达式的结果判断,结果只能是1或0
位运算与 的结果 是整型数
逻辑运算与 的结果 是 布尔量--真与假。
位运算与 常用于 取一个数的某一位 或者 取一个数的某几位,(按二进制数来考虑,取位运算)
逻辑运算与 常用于 条件判断,用于条件语句,while循环语句.
前者是针对二进制数,后者是条件中用