excel二进制移位运算_移位运算和乘除运算的关系

这一讲重点讲清楚2个知识点 1、弄清移位运算和乘除运算的关系   十进制的运算,我们都很熟悉了,那么二进制的运算机制是怎样的呢?   其实,四则运算同样也可以使用在二进制中,要注意每逢2进一位即可。   下面我们来学习二进制特有的运算(计算机特有的运算) 什么是移位运算? 移位运算指的是:将二进制数值的各位数进行左右移位(shift=移位)的运算。 ①左移:向高位方向 ②右移:向低位方向 案例 0e0e6c89cef3f75c217e70c639214ae6.png   图示意思:变量a保存十进制39,将左移两位后的结果保存在变量b中。 对于计算机来说,无论移动的是十进制或者十六进制等,在底层都是转换成二进制来操作的。 上面的案例转换成二进制后移位(左移2位)操作如下   ddb4cf4eee9736218bf7cc1d2bf9bebd.png 对上图的说明:无论左移还是右移,溢出的最高位或者最低位直接舍弃。 左移空出的最低位用0补,右移空出的最高位后面讲解。 规律:十进制左移后会变成原来的10倍、100倍、1000倍。。。同样的,对于二进制来说,左移后变成原来的2倍、4倍、8倍。。。。 反之,右移后变成原来的1/2  1/4   1/8等,这从侧面也能反映出移位运算能代替除法运算了。   2、补数 补数概念是为了解决计算机中负数的表示方式 那么什么是补数? 二进制表示负数的原则:最高位作为符号位来表示 最高位为0,表示正数 最高位为1,表示负数 说到这儿可能有些人想,按照上面的原则,-1就表示成10000001,正确答案是11111111。 计算机在做减法运算时,内部转换成加法运算的,为此,表示负数时要使用到二进制中的补数,补数就是用正数来表示负数。 计算机中,一个正数-一个负数=一个正数+这个负数的补数   3、如何获取补数? 获取补数的方法:二进制的各数位的数值全部取反,然后将取反后的数加1. 如用8位二进制表示-1时,只需求得1的补数即可。 1-->00000001 00000001取反11111110 11111110+1=11111111 如下图 02815a826756f293d0ae9d8d99fd5321.png 补数这种思维方式,直观上可能不容易理解,但是逻辑上是很严谨的。 案例1-1=1+(-1)=0 如果把-1表示成10000001,运算结果如下。(错误)   1ef708b8ca53eda70242d6eacb76cb6d.png 如果把-1表示成11111111,运算结果如下。(正确)     c8e8968153689cbbfb5663ae09dfaf56.png 补数求解的变换方式就是取反+1 为什么使用补数后就能正确的表示负数呢? 看下图 c8e8968153689cbbfb5663ae09dfaf56.png 运算结果为0 结论:将二进制数的值取反后加1的结果和原来的值相加,结果为0。 注意:当运算的结果为负数时,计算结果也是以补数的形式来表示的。 案例(3-5) 3--00000011 5--00000101 5的补码为11111010+1=11111011 -2用补数表示 2--00000010 2取反11111101 2取反后+1:11111110   7435721c8190f8201313aca8a4faafff.png   4、这一讲我们讲了移位运算和乘除运算的关系和补数,这些知识点对于一个程序员来说,有时候很重要。 明白这些底层机制以后,可以用于代码的优化,提高开发速度等方面。对于非专业人员,了解这些知识可能对你暂时没有用。 但是,如果我们学习什么东西都要追求当前有用,那你的视野可能有些狭隘。 现在很流行的说法是,跨界学习,我所理解的跨界学习是,不要局限于当下,有时候可以学点无用之学,说不定哪天可以在你的领域内解决大问题呢。   下一讲:逻辑右移和逻辑算术右移的区别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值