位移运算 << 和 >>

一个数在计算机中的二进制表示形式,叫做这个数的机器数。机器数是带符号的, 最高位存放符号, 正数为0, 负数为1.

计算机系统中,数值用补码来存储。使用补码,可以将符号位和其他位统一处理同时减法也可按加法来处理。

1.原码和补码

正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

1)原码转补码分两种情况

  (1)正数的补码:与原码相同

 例如:+9的原码是0000 1001。补码也是0000 1001

  (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反,然后加1

   例如:-9原码为1000 1001(高位为符号位,1表示负数,0表示正数),补码为11110111.

2)补码转原码也分两种情况

  (1)正数的原码:与补码相同

      例如:+9的补码是0000 1001。原码也是0000 1001

  (2)负数的原码:符号位为1,其余位为该该补码按位取反,然后整个数加1

      例如:-9的补码是1111 0111,原码是1000 1001

2.左移位运算符

   使用左移位(<<)运算符可以将数向左移位。其作用是所有的位都向左移动指定的次数,高次位就会丢失,低位以0来填充。

1)正数左移位(以9为例)

     9二进制原码表示0000 0000 0000 0000 0000 0000 0000 1001

    9的二进制补码表示:0000 0000 0000 0000 0000 0000 0000 1001

  9左移(<<4位:0000 0000 0000 0000 0000 0000 1001 0000

  移位后的结果十进制表示:      144

2)负数左移位(以-9为例)

-9的二进制原码表示0000 0000 0000 0000 0000 0000 0000 1001

-9的二进制补码表示:1111 1111 1111 1111 1111 1111 1111 0111

-9左移(<<4位:1111 1111 1111 1111 1111 1111 0111 0000

  移位后结果的原码表示:1000 0000 0000 0000 0000 0000 1001 0000

  移位后的结果十进制表示:     -144

3. 移位运算符

   使用左移位(>>)运算符可以将数向移位。其作用是所有的位都向移动指定的次数,位就会丢失,位以符号位来填充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值