java中的运算,+-* /% | ^ &
java中运算都是操作符号,那么整形默认为int,双精度默认为都double
整数
看案例:

无法编译通过:操作默认为int,接受结果为int,所以这个地方编译无法通过,所以需要强制类型转换

再看案例:


再看双精度:

这种是可以的,再看

这也是可以的,看结果:

精度损失。再看

结果:

再看多种案例:

看结果:

再看案例 :

看结果

那么会什么会出现这么多问题呢,原因
在数据结果,转为二进制的时候,比如0.3 转换为二进制如这么转换的
0.3*2->0.6->0.6*2>1.2 二进制为1
将小数点后面的0.2继续进行
0.2*2》0.4>0.8>1.6>二进制为1
再进行
0.6*2》1.2 二进制1 再进行
0.2 *2》0.4》0.8》1.6 如此循环下去,导致最后会进行精度损失,
所以如果项目中要有这样的,所以需要进行采用dicmal类型来操作精度。避免精度损失
| ^ & 运算解析:
看案例:

看结果:

这是为什么呢。
分析
第一个为或运算,第二个为与运算,第三个为亦或预算
3转化为二进制的 0000 0011
1转为二进制 0000 0001
或,只要其中一个为正确那么就正确,在进行运算的时候,只要其中一个为1,那么就为1
所以 1|3 结果为0000 0011 即结果为3
与 只要两个都正确,那么正确,在运算中只要两个相同就为1,另外为0
1&3 结果为0000 0001 所以结果为1
亦或 只要两个不同才正确,所以计算时候,只有两个不同才为1,另外为0
1^3 结果0000 0010 所以结果为2
位运算
看案例:

一个是左移,一个是右移
1 二进制 0000 0001 向右移 3位 所以 0000 0000 所以结果为0
左移 0000 1000 所以为 8
再看案例:

9的二进制为 0000 1001
左移移动 0100 1000 结果为2e6+2e3=64+8=72 计算规则是这样的,首先最后一个为2的0次方,那么第七位就为2的6次方,第四位就为2的3方法
右移 0000 0001 所以结果为1
随机推荐
- 数据结构(四十七)归并排序(O(nlogn))
一.归并排序的定义 归并排序(Merging Sort)就是利用归并的思想实现的排序方法.它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到[n ...
- WebApi -用户登录后SessionId未更新
描工具检测出.net的程序有会话标识未更新这个漏洞 用户尚未登录时就有session cookie产生.可以尝试在打开页面的时候,让这个cookie过期.等到用户再登陆的时候就会生成一个新的sessi ...
- InfluxDB常见疑问与解答 - 数据写入时如何在表级别指定保留策略
网友Siguoei:我想让一个库中不同的measurment能够指定不同的保存策略.而不是写入时使用数据库的默认保留策略. Answer:这个特性InfluxDB支持的,写入时序数据时,在行协议前加上 ...
- C++学习笔记3_类.和相关函数
1. 类*在C++中,struct和class没有明显差别,不同C#,class一定要new(手动开辟内存)出来struct Hero{ char name[64]; int sex;}void pr ...
- Android开发中常用的设计模式
首先需要说明的是,这篇博文灵感来自于 http://www.cnblogs.com/qianxudetianxia/archive/2011/07/29/2121547.html ,在这里,博主已经很 ...
- vue引入百度地图 --BMap is not defined ,eslint BMap报错
在mounted初始化地图的时候,因为异步问题会导致BMap is not defined,也就是百度的api还没完全引入或者加载完成,就已经进行地图初始化了 解决方法: 1.创建一个map.js e ...
- 搜索框(SearchView)用法
SearchView是Android原生的搜索框控件,它提供了一个用户界面,可以让用户在文本框内输入文字,并允许通过看监听器监控用户输入,当用户输入完成后提交搜索时,也可通过监听器执行实际的搜索. S ...
- VM虚拟机安装Windows Server 2008操作系统
镜像链接:https://pan.baidu.com/s/1_Hv6U3xulqkkKzCYXmNvNQ 提取码:uwph Windows 2008 版本 有标准版.有企业版 群集 双击热备 clus ...
- apache+php+mysql搭建php环境
1.首先准备解压包:zend-loader-php5.6-windows-x86_update1(nts版).php-5.6.37-nts-Win32-VC11-x86.mysql-5.5.19-wi ...
- 一条查询语句在MySQL中是如何执行的?
前言 我们在学习一种技术的时候,首先要鸟瞰其全貌,千万不要一开始就陷入到细节中去,这样有助于我们站在高维度其理解问题 —— 丁奇. 学习MySQL也是一样,所以我们可以从一条查询语句的执行开始看起. ...