文档章节

java 的 移位运算, 实现 乘法与除法

之渊
 之渊
发布于 07/12 15:59
字数 360
阅读 32
收藏 0

在实际 开发中,其实很少 使用 移位运算。

特别是 还用 移位运算 实现 高性能的 乘法与除法。

虽然知道,但是还是有点蒙,或者说 不知道应该怎么用

除法 >>

        int a = 10;
		int c = a >> 1;
		System.out.println("c:" + c);
		// 向低位移动一位,相当于 除以 2的 1次方
		System.out.println(a >>= 1); //写法 和  a>>1 是一样的
        
       结果都是 5 

看移位的值了 ,比如   a >>2 也就是 将 a 除2 再 除2 , 也就是 a 除以4 的商。 也就是 2的 2次方。

 

同理 乘法也是差不多

乘法 <<

 a<<=1;// 向高位移动一位,相当于乘以 2 的1次方 

 

使用

比如说  求 a/2 的 商

或者说是  乘数或者除数 是固定值

 

总结

其实没必要使用,因为比较难看,而且难理解。因为 就算不适用移位运算, 使用 普通简单的乘除。

最终 编译器也会对代码进行优化的。不需要担心性能问题。

 

参考

https://www.cnblogs.com/chuijingjing/p/9405598.html

https://blog.csdn.net/fu_zhongyuan/article/details/88666262

https://blog.csdn.net/wanqian11k/article/details/79090478

 

 

 

 

© 著作权归作者所有

之渊
粉丝 13
博文 633
码字总数 194657
作品 0
佛山
程序员
私信 提问
加载中

评论(2)

好了伤疤忘了疼
好了伤疤忘了疼
by te
之渊
之渊 博主
大佬不懂什么意思哦
Divide Two Integers

不能使用乘法,除法和mod operator,实现除法功能。 Divide two integers without using multiplication, division and mod operator. If it is overflow, return MAX_INT. 用减法可以实现,......

rustfisher
2015/10/17
0
0
29. Divide Two Integers - LeetCode

Question 29. Divide Two Integers Solution 题目大意:给定两个数字,求出它们的商,要求不能使用乘法、除法以及求余操作。 思路:说下用移位实现的方法 Java实现: 法1:如果可以用除法,一...

yysue
2018/07/06
28
0
Java Double相加出现的怪事

问题的提出: 编译运行下面这个程序会看到什么 [java] view plaincopy public class test { public static void main(String args[]) { System.out.println(0.05 + 0.01); System.out.print......

onedotdot
2017/11/05
31
0
Java 基础:hashCode方法

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 一、前言 泥瓦匠最近被项目搞的天昏地暗。发现有些要给自己一些目标,关于技术的目标: 专注很重要。专注Java 基础 + H5...

泥沙砖瓦浆木匠
2015/04/27
1K
4
Flutter学习笔记(5)--Dart运算符

如需转载,请注明出处:Flutter学习笔记(5)--Dart运算符 先给出一个Dart运算符表,接下来在逐个解释和使用。如下: 描述 运算符 一元后缀 expr++  expr--  ()  []  .  ?. 一元前...

CurtisWgh
07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周一乱弹 —— 年迈渔夫遭黑帮袭抢

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享Elvis Presley的单曲《White Christmas》: 《White Christmas》- Elvis Presley 手机党少年们想听歌,请使劲...

小小编辑
今天
1K
16
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
12
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部