社区
Java SE
帖子详情
JAVA中为何~1等于-2,~0等于-1呢????不懂这是为什么。
pop3696
2007-02-26 10:42:53
刚学,不懂
...全文
1941
8
打赏
收藏
JAVA中为何~1等于-2,~0等于-1呢????不懂这是为什么。
刚学,不懂
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pop3696
2007-02-27
打赏
举报
回复
to coldwindtang(风)
谢谢
「已注销」
2007-02-26
打赏
举报
回复
2
这个问题涉及到计算机内部的编码。
对于整数,计算机内部用最高位表示符号位,0表示为正,1表示为负。
对于负数,为了便于计算,计算机用补码来表示其值。
已经一个数的补码,要知道其值分两种情况:
1:符号位是0,正数,所以后面的二进制位则表示大小,即正数的原码=其补码。如1表示出来则为00000001(我这里用八位来表示,也可以用16位或32位)
2:符号位是1,负数,这时候需要把后面的数取反再加一(要问为什么?查一下资料吧,可以根据补码的特性推出来),所以11111110表示的数是1111110取反为0000001,再加一,则为0000002。算上符号位,就是-2。
再让我们回到楼主的问题。
1的二进制表示为:00000001,则~1为11111110,根据补码的转换方法,我们就可以算出11111110表示的数是-2.
同理:~0 = -1
Gekkou
2007-02-26
打赏
举报
回复
以int型为例:
~1 = 11111111 11111111 11111111 11111110 = -2
~0 = 11111111 11111111 11111111 11111111 = -1
lixiaoxue85
2007-02-26
打赏
举报
回复
LZ把代码贴出来 取非,结果只有0和1吧 着么可能出来-2,LZ看错了?
expter
2007-02-26
打赏
举报
回复
没懂你什么意思
pop3696
2007-02-26
打赏
举报
回复
说错,是非操作(~),~1因该是0啊怎么是-2 ??
pop3696
2007-02-26
打赏
举报
回复
对1和0分别取反。
mingxuan3000
2007-02-26
打赏
举报
回复
不明白说什么
js
中
的0.1+0.2
等于
多少?为什么不
等于
0.3?
本文解释了在编程
中
0.1+0.2不
等于
0.3的现象,由于浮点数的二进制表示存在精度限制,导致结果微小偏差。通过IEEE754编码和使用BigDecimal类解决了这一问题。,
day1:面试官:0.1+0.2
等于
多少?
文章讨论了面试
中
常见的问题,即0.1+0.2在
Java
中
并不
等于
0.3,原因在于浮点数的二进制表示存在精度误差。通过IEEE754编码解释了这一现象,并提供了使用BigDecimal类解决精度问题的方法。最后强调在涉及金钱交易时,这类精度问题的重要性。
0.1+0.2为什么不
等于
0.3
本文详细解释了为什么在计算机
中
0.1+0.2不
等于
0.3,涉及到浮点数转换成二进制、指数和小数位处理的精度问题,以及如何使用BigDecimal解决浮点数计算的精度丢失问题。,
double类型的2.0-1.1为什么
等于
0.89999 但是2.0-0.1却可以=1.9
本文主要探讨
Java
中
double类型的精度问题,以2.0 - 1.1为例,详细介绍了double类型的存储结构,包括符号位、阶码和二进制值。通过将2.0和1.1转换为二进制进行减法运算,解释了结果为0.89999的原因,还对比了2.0 - 0.1
等于
1.9的情况。
在
Java
面试
中
0.1+0.2不
等于
0.3的理解
文章解释了计算机
中
0.1+0.2不
等于
0.3的原因,归因于浮点数在二进制表示下的不精确性。由于二进制转换的限制,0.1和0.2无法精确表示,导致相加后不精确。为了解决精度问题,文章提到了在
Java
中
使用BigDecimal类进行高精度计算的方法,这种方法同样适用于其他对计算精度有严格要求的场景,如航天系统。
Java SE
62,621
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章