位运算符与正负数的二进制表示

位运算符分为位逻辑运算符和位移运算符

位逻辑运算符

& a&b
| a|b
~ 取反 ~a
^ 异或 a^b

位移运算符

<< 左移位 a<<2
>> 右移位 a>>2

1."&"

两个操作数二进制表示,只有对应位同为1,结果位为1,否则为0.

       0000  0000  0000  1100

&     0000  0000  0000  1000

——————————————

       0000  0000  0000  1000

(12&8)

2. "|"

两个操作数二进制表示,只有对应位同为0,结果位为0,否则为1.

       0000  0000  0000  0100

|      0000  0000  0000  1000

——————————————

       0000  0000  0000  1100

(4|8)

3."^" 

两个二进制表示相同时(同时为0,或者同时为1时),结果为0,否则为1.

     0000  0000  0001  1111

|    0000  0000  0001  0110

——————————————

      0000  0000  0000  1001

(31^22)

4. "~"

1改为0,0改为1.

~      0000  0000  0111 1011

——————————————

        1111  1111  1000  0100

(~123)

5."<<"

将二进制操作数向左移动规定的位数,高位溢出的位丢弃,低位的空位用0补齐。

00110000     左移一位     (00110000)<<01100000   转换位10进制就是96(48*2)

(当左移两位就是192(48*2^2))

6.">>"

将二进制操作数向右移动规定的位数,低位溢出的位丢弃,高位的空位用0/1补齐(若高位是0,则,用0补齐;若高位是1,则用1补齐)。

右移位运算相当于除以2^n

 正负数的二进制表示

首先,1Byte(字节)=8bit(比特),一比特就是二进制中的一个位。一个汉字在计算机内部站2个字节,一个数字占1个字节。

在二进制码中,采用最高位是符号位的方法来区分正负数,正数的符号位为0、负数的符号位为1。

原码:符号位+真值的绝对值

2的原码:0000 0010

-2的原码:1000 0010

反码:正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各个位取反。

2的反码:0000 0010

-2的反码:1111 1101

补码:正数的补码就是其本身;负数的补码实在其反码的基础上加1.

2的补码:0000 0010

-2的补码:1111 1110 

 负数的二进制表示=负数的补码

猜你喜欢

转载自blog.csdn.net/qq_61448516/article/details/128642544