位操作符以及计算机数据存储

位操作符只能处理(signed / unsigned) 字符型、短整形、整形变量常量字面值,而不能操作小数。也可以类中进行运算符重载。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 
操作符 作用 
──────────────────────────── 
& 位逻辑与
| 位逻辑或
^ 位逻辑异或
- 位逻辑反
>> 右移
<< 左移
━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 

 

& 位逻辑与

按位相与,同真为真,其他为假。

 

| 位逻辑或

按位相或,同假为假,其他为真。

 

^ 位逻辑异或

按位相异或,不同为真,相同为假。

 

- 位逻辑反

每一位取反。

 

>> 右移

数据的最低位移除 符号位补充一个原有符号(也可以理解为符号位不变 最高数据位补充一个符号位)

        例子:正数 0010 0000 0000 1011        >>1        0001 0000 0000 0101

                负数 1000 0000 0000 0000        >>1        1100 0000 0000 0000
<< 左移

数据的最高位移除,最低为补充0

          例子:正数 0010 0000 0000 1011        <<1        0100 0000 0001 0110

                负数 1000 0000 0000 0000        <<1        0000 0000 0000 0000

 

这里要注意的是 计算机当中数据的存储都是以补码形式的

对于有符号数据 最高位表示符号位0代表正数  1代表负数

正数的正 反 补码一致.

负数的反码是正码每一位取反(符号位除外), 补码是反码最后一位+1.

 

你可能感兴趣的:(c/c++,位操作符)