社区
Java SE
帖子详情
JAVA中为何~1等于-2,~0等于-1呢????不懂这是为什么。
pop3696
2007-02-26 10:42:53
刚学,不懂
...全文
1939
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.1+0.2是
等于
0.3的,然而在大部分编程语言
中
却不
等于
0.3我第一次知道也是难以置信,于是就写了下图的
java
程序来验证相信大部分小伙伴第一次知道这个事实后都会怀疑人生难道这个世界是假的?我们身处在楚门的世界
中
?显然不是这样😂这是为什么,又该如何解决呢?
day1:面试官:0.1+0.2
等于
多少?
十进制小数转成二进制,一般采用"乘2取整,顺序排列"方法,如0.625转成二进制的表示为0.101。但是,并不是所有小数都能转成二进制,如0.1就不能直接用二进制表示,他的二进制是0.000110011001100…符号位用于表示正数或负数,尾数是有效数字的部分,而阶码用于表示指数。众所周知数学上是0.1+0.2是
等于
0.3的,然而在大部分编程语言
中
却不
等于
0.3。BigDecimal 是一个可以实现对浮点数的运算的类,而且不会造成精度丢失。我第一次知道也是难以置信,于是就写了下图的
java
程序来验证。
0.1+0.2为什么不
等于
0.3
大家好,我是哪吒。最近碰到一个问题,很有趣,我就不贴代码了,要不你们会以为我在无
中
生有。我现在的心情很复杂,我想静静。我只知道浮点数相加是丢失精度的,但是为什么会丢精度,我就不知道了。浮点数在计算机内部是以二进制的形式存储的,而有些十进制的小数在二进制下无法精确表示,因此在进行浮点数运算时可能会存在精度误差。浮点数分为单精度对应32位操作系统和双精度对应64位操作系统。目前的操作系统大多是64位操作系统,故这里只解释一下二进制如何转成双精度浮点数的二进制。双精度浮点数用1位表示符号位,11位表示指数位,52
double类型的2.0-1.1为什么
等于
0.89999 但是2.0-0.1却可以=1.9
double类型的2.0-1.1为什么
等于
0.89999 double类型占了64位。 第一位为符号位,0为正,1为负。 最后52位为十进制转换为二进制后的值。
中
间11位为阶码,可表示-1024~1023,表示最后52位为2的多少次方。比如最后52位为二进制的1.0*2^1(即二进制10),那么十一位阶码的十进制值为1,为了方便表示,加上1023变成非负数。 float类型占32位(1位符号位,...
在
Java
面试
中
0.1+0.2不
等于
0.3的理解
在
Java
面试
中
如果面试官问我们0.1+0.2
等于
0.3吗?如果不
等于
,那可以解释一下吗?
Java SE
62,621
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章