JAVA-初步认识-第三章-移位运算符练习
一. 用学习到的位运算符参与计算
现在我们探讨如何高效地进行2*8(如果想利用左移来提高运算效率,必须是2的次幂),在了解如何提高效率之前,我们要先知道计算机一般地是怎么进行乘法运算的。
上图就是正常乘法运算的流程图(对于上面的运算,其实省略了左侧的很多的0)。想提高效率,就要使用移位运算。
移位运算是直接操作二进制位。→我们如果以计算时的步数来作为效率的体现,那么这里的移位运算只需要两步就可
完成运算,但是按照正常的乘法运算需要很多步。
通过对2的次幂的数的乘法和除法的计算过程研究,人们发现核心就是移位,从而设计了移位运算符。
以目前的讲解来看,移位运算符本质上是为了提高乘法和除法运算的效率。
二. 对两个整数变量的值进行互换,不需要借用第三个变量
常见的两个整数变量之间进行互换是采用,第三方变量。
如果要避免第三方变量,可以采用求和相减的方式,a=a+b, b=a-b, a=a-b.但是这种方法不建议用,
如果两个变量数值过大,会造成精度缺失。(精度缺失问题确实值得好好研究,目前还不是很懂。)→四则运算的过程中,精度缺失的问题始终是要注意的问题。
这里采用另一种计算,异或的方式。a=a^b, b=a^b, a=a^b. →a=3^5; b=3^5^5; a=3^5^3。注意:这里暴露出一点,对于异或运算
的本质理解不清。a^b和b^a结果是一样的,仔细想想异或位运算的过程就知道了,也不会超出范围。
异或运算的两个数,改变两个数的先后顺序,不影响结果。
分类:
JAVA初步认识-第三章
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· C# 开发工具Visual Studio 介绍
· 在 Windows 10 上实现免密码 SSH 登录
· C#中如何使用异步编程