一、位运算符
(一)真值表
位运算符作用于位,并逐位执行操作。“与” “&”、“或” “|” 和 “异或” “^" 的真值表如下所示:
p | q | p&q | p|q | p^q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
(二)例子
假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A | B = 0011 1101
A^B = 0011 0001
~A = 1100 0011
(三)位运算符
运算符 | 描述 |
---|---|
& | 如果同时存在于两个操作数中,二进制 AND 运算符复制一位到结果中。 |
| | 如果存在于任一操作数中,二进制 OR 运算符复制一位到结果中。 |
^ | 如果存在于其中一个操作数中但不同时存在于两个操作数中,二进制异或运算符复制一位到结果中。 |
~ | 具有"翻转"位效果,即0变成1,1变成0。 |
<< | 二进制左移运算符。左操作数的值向左移动右操作数指定的位数。 |
>> | 二进制右移运算符。左操作数的值向右移动右操作数指定的位数。 |
二、码
(一)原码
将一个整数转换成二进制形式,就是其原码。例如short a = 6; a 的原码就是0000 0000 0000 0110
;更改 a 的值a = -18; 此时 a 的原码就是1000 0000 0001 0010
。
通俗的理解,原码就是一个整数本来的二进制形式。
(二)反码
对于正数,它的反码就是其原码(原码和反码相同);
负数的反码是将原码中除符号位以外
的所有位(数值位)取反,也就是 0 变成 1,1 变成 0。例如short a = 6; a 的原码和反码都是0000 0000 0000 0110
;更改 a 的值a = -18; 此时 a 的反码是1111 1111 1110 1101
。
(三)补码
对于正数,它的补码就是其原码(原码、反码、补码都相同);
负数的补码是其反码加 1。例如short a = 6; a 的原码、反码、补码都是0000 0000 0000 0110
;更改 a 的值a = -18; 此时 a 的补码是1111 1111 1110 1110
。
可以认为,补码是在反码的基础上打了一个补丁,进行了一下修正,所以叫“补码”。
原码、反码、补码的概念只对负数有实际意义,对于正数,原码、反码、补码都是一样的。
在计算机内存中,整数一律采用补码的形式来存储。
标签:操作数,0000,补码,运算符,反码,原码 From: https://www.cnblogs.com/imreW/p/17142682.html