按十六进制结果的按位和逻辑AND / OR

时间:2015-02-02 16:16:25

标签: bitwise-operators logical-operators bitwise-and bitwise-or

所以如果我有x = 0x01y = 0xff而我x & y,我会得到0x01。如果我x && y,我仍然会0x01,但计算机只是说它是真的,如果它不是0x00?我的问题是操作后的位是否相同,无论是按位还是逻辑AND / OR,但计算机只是以不同的方式解释最终结果?换句话说,&结果的十六进制值。和&& (同样|和||)操作相同吗?

编辑:在这里谈论C

2 个答案:

答案 0 :(得分:1)

答案取决于使用的确切语言。

在某些弱类型语言(例如Perl,JavaScript)中,如果a && bb都是" a将评估b的实际值。除此之外"或a

在C和C ++中,&&运算符只返回0或1,即int等效于true或false。

在Java和C#中,向int提供&&甚至不合法 - 操作数必须已经是布尔值。

对于a && b == a & ba的所有合法值b,我不知道任何语言。

答案 1 :(得分:0)

在C#中,运算符的行为有所不同: &安培;&安培;仅允许布尔类型和&对于任何整数类型。

a&&如果a和b都为真,则b返回true。 a& b返回按位AND运算的结果。