0

整数 a = 17 (=10001)

诠释 b=5 (101)

a&b      1         bitwise AND
a|b     21         bitwise OR
a^b     20         XOR (16+4) “just one”
a&&b     1         logical AND
a||b     1         logical OR
-b      -5         minus b
~b       -6         ?
~(~a)      17        ?
!b       0         logical “NOT B”
!(!a))   1         logical “NOT NOT A”
a=b      0         “a==b?”
a=’A’   65         ?
a|’@’   64         ?

你能帮我解释一下在哪里吗?是。

4

6 回答 6

2

-是一元负数。假设没有溢出,它只取值的负数。负5显然是'-5'。

~是按位补码。我建议你查一下它是如何工作的。在二进制补码中,~x等价于-x - 1。而对于~(~a),显然补码的补码就是原数。

对于最后两个,您只是将一个字符视为一个数字。这只是使用字符的 ascii 值。'A' 的值是 65,但我非常怀疑你的老师希望你把它们都记住。你可能会得到一个ASCII表。

于 2012-09-30T13:45:45.327 回答
2

假设 a = 17(10001 二进制)和 b = 5(101 二进制),我们有:

a&b      1         bitwise AND
a|b     21         bitwise OR
a^b     20         XOR (16+4) “just one”
a&&b     1         logical AND
a||b     1         logical OR
-b      -5         minus b
~b       -6         bitwise NOT 
~(~a)      17        bitwise NON NOT - the same as a
!b       0         logical “NOT B”
!(!a))   1         logical “NOT NOT A”
a=b      5         assignment to a the value of b
a='A'   65         assignment to a the ASCII value of char 'A'
a|'@'   81         a OR ASCII value of char '@' 
于 2012-09-30T13:46:25.710 回答
2
~b       -6         ?

“~”翻转所有位,负数使用称为2s 补码的东西表示。-6 正是翻转“5”的所有位时发生的情况:您得到不同的位模式,与 2s 补码中的“-6”位相同。

~(~a)      17        ?

相似的。翻转所有位,然后再次翻转所有位,你会得到什么?和以前一样。

a=’A’   65         ?

在内部,字符由数字表示,就像计算机中的其他所有内容一样。实际上,今天使用的所有这些数字<->字符表都是基于ASCII的,而“A”恰好在 ASCII 表中具有数字 65。

a|’@’   64         ?

那没有意义。'@' 是 64(同样是 ASCII),即十六进制 0x40。0x40 | 17 应该是 81。

于 2012-09-30T13:49:17.423 回答
1

运算符是按位 NOT,这~意味着 的所有位int都被反转。对数字的影响取决于类型和实现。

|运算符是按位或。int在 C 中,将a 与 a进行 OR 是完全有效的char,就像在 a|'A' 中所做的那样。那么的值char就是 ASCII 数字。

=运算符是赋值。分配的结果是已分配的任何内容。

于 2012-09-30T13:44:58.587 回答
1
~b - binary NOT b
~(~a) - binary NOT ( NOT a )
a='@' - assign the int value of '@' to a
a|'A' - bitwise OR with the int value of 'A'
于 2012-09-30T13:46:30.533 回答
1
  • =: 赋值运算符。
  • ~:位NOT运算符(每个位的逻辑否定)。
  • |:位OR运算符(逻辑包含OR在每个位上)。
于 2012-09-30T13:46:48.023 回答