二进制与操作符详解((移)位操作符)

1.原码反码补码

二进制存储在计算机里的其实是补码

正数的原码反码补码都是一样的

我们拿负数的原码补码反码进行分析

例如-2的原码是10000000000000000000000000000010第一个数字代表的是符号的正负位

反码是除了符号位全部都取反11111111111111111111111111111101

补码是反码+1 111111111111111111111111111111110

这里为什么计算机采用补码而不采用原码的呢有个例子

2的原码是00000000000000000000000000000010如果我们采用原码相加的话就会得到

10000000000000000000000000000100就会得到-4

这时我们用补码进行计算试试上面的两个一相加就会向前进0变为

0000000000000000

这个是摘自小红书博主71 🍑白桃书生发布了一篇小红书笔记,快来看吧! 😆 CLZdHQBx2Q62GDN 😆 http://xhslink.com/guzoWI,复制本条信息,打开【小红书】App查看精彩内容!

本章节主要讲述了位操作符& | ^ >> <<

1.&按(2进制)位与

两个操作符的二进制位对应的有0则为0

例如6的补码00000000000000000000000000000110

-7的补码11111111111111111111111111111001

所以6&-7为00000000000000000000000000000000所以得到的是0

2.| 按(2进制)位或

两个操作符对应的二进制位的只要有1就是1,两个同时为0才是0

还是上面的

例如6的补码00000000000000000000000000000110

-7的补码11111111111111111111111111111001

得到的补码为11111111111111111111111111111111

我们取反加一得到的原码是10000000000000000000000000000001为-1

3.^按(2进制)位异或

规则是两个相同的才为0,两个相异的为1

例如6的补码00000000000000000000000000000110

-7的补码11111111111111111111111111111001

6^-7的补码为10000000000000000000000000000000

原码为100000000000000000000000000000001是-1

4.<<左移操作符

移动的是存储在内存中的二进制位(补码)

例如10<<1左移一位

00000000000000000000000000001010

左移一位右边补0是左移操作符的计算规则

5.>>右移操作符

右移运算分两种

分别是逻辑右移和算术右移

逻辑右移 左边用0填充,右边丢弃

算术右移 左边用原该值的符号位填充,右边丢弃

这取决于编译器的操作环境,一般都采用的是逻辑右移

下面会写几篇有关于位操作符与移位操作符的一些编程代码

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值