移位操作符、位操作符,原码、反码、补码

整数的二进制的表达形式有3种。

  1. 原码

  1. 反码

  1. 补码

下面我们举一个例子吧

十进制的2

原码:00000000000000000000000000000010(常见的形式)

反码:00000000000000000000000000000010

补码:00000000000000000000000000000010

小结 正整数的原码反码补码相同

十进制的-2

原码:10000000000000000000000000000010(与2不同的是第一位符号位是1)

反码:11111111111111111111111111111101(除了符号位,其他位取反,1~0,0~1)

补码:11111111111111111111111111111110(反码加1)

小结 负整数的第一位符号位是1;反码是除符号位外,其他位取反;补码就是反码+1

总结原码、反码、补码的转换

正整数就不必多说,原码,反码,补码都一样。

重点:在计算机内存中存储的是补码

一、移位操作符.

<< 左移操作符

>> 右移操作符

移位操作符,操作的是二进制的补码

怎么使用呢

左移操作符

移动规则:左边抛弃,右边补0

右移操作符

移动规则:

首先右移操作符分两种

  1. 逻辑移动

右边抛弃,左边补0

  1. 算术移动(计算机中的操作)

右边抛弃,左边用符号位填充(针对负整数)

二、位操作符

& 按位与

| 按位或

^ 按位异或

~ 按位取反

位操作符是针对二进制补码进行计算的

& 对应二进制位,有0则为0,全为1才为1

Eg

| 对应的二进制位有1则为1,全0才为0

一样是对二进制的补码进行操作

^ 对应二进制位相同为0,相异为1

对二进制补码进行操作

  1. a^a=0; a与a的二进制补码全部相同

  1. 0^a=a;0的二进制补码全是0,导致a的二进制补码没有发生变化

通过按位异或的学习,我们可以巧妙的用它进行两个数字的交换(不建立第三变量)

~ 对二进制位取反

所有补码的二进制位取反

-1的补码是11111111111111111111111111111111

所以~a=0;

三、布尔类型

bool(_Bool)类型表示真假

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值