社区
Java SE
帖子详情
Java中移位操作符问题!关于~的
原来缘来
2011-03-26 10:57:40
public class Sample {
public static void main(String[] args) {
int a=4;
System.out.println(~a);
}
}
求高手解释一下,为什么输出-5,麻烦讲清楚点
...全文
167
7
打赏
收藏
Java中移位操作符问题!关于~的
public class Sample { public static void main(String[] args) { int a=4; System.out.println(~a); } } 求高手解释一下,为什么输出-5,麻烦讲清楚点
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tongxingzhen123
2011-03-27
打赏
举报
回复
楼上正解
Ganymede
2011-03-27
打赏
举报
回复
(~a);是逐位取反的意思。int是4位 ,a的值为4,所以他的二进制为00000000 00000000 00000000 00000100
取反是11111111 11111111 11111111 11111011 最高位为符号位,1为负 0为正,而负数的表示为他的补码,转换为十进制为 除了符号位不变,其余取反加1 也就是10000000 00000000 00000000 00000101 结果就是-5啦
zqfddqr
2011-03-27
打赏
举报
回复
2楼正解
Ganymede
2011-03-27
打赏
举报
回复
我上面可能解释的不是很详细。下面详细说下,相信以后楼主一定对这种题颇有心得了。呵呵
在二进制的世界里,负数是以补码的形式存放在内存中的,而正数就是以原码的形式存放的,所以下面我只解释下补码的计算,
补码=反码+1
。所谓的反码就是 将负数的原码除最高位不变(也就是符号位,为1时,表示负,为0时,表示正。下面红色标识)以外的其他位都按位取反。(下面还是以-5为例子)
-5原码:
1
0000000 00000000 00000000 00000101。那么-5的反码相应就是:
1
11111111 11111111 11111111 11111010
这时求负数的补码就用反码加1了。也就是负数的最终保存形式:11111111 11111111 11111111 11111011
那么针对楼主说的,int i=-5;也就是将11111111 11111111 11111111 11111011按位取反了,所以结果是:
00000000 00000000 00000000 00000100。所以System.out.println(~i);输出的是4。
Ganymede
2011-03-27
打赏
举报
回复
最高位就是二进制数从左边数第一个,也就是符号位。
这是-5的原码
:10000000 00000000 00000000 00000101,但是负数的二进制在计算机里是以补码的形式存放的。
这是-5的补码
:11111111 11111111 11111111 11111011,这也是-5在内存里存储的最终形式。
然后是按位取反
,结果是:00000000 00000000 00000000 00000100 就是十进制的4
原来缘来
2011-03-27
打赏
举报
回复
[Quote=引用 2 楼 followme_1987 的回复:]
(~a);是逐位取反的意思。int是4位 ,a的值为4,所以他的二进制为00000000 00000000 00000000 00000100
取反是11111111 11111111 11111111 11111011 最高位为符号位,1为负 0为正,而负数的表示为他的补码,转换为十进制为 除了符号位不变,其余取反加1 也就是10000000 00000000 00000000 0000010……
[/Quote]
二楼的最高位指的那位?顺手牵羊解释一下
int i=-5;
System.out.println(~i);
为什么输出4
qybao
2011-03-26
打赏
举报
回复
二进制运算
自己用二进制的方式取反后看看是什么结果就知道了
详解
Java
的按位
操作符
Java
的位
操作符
用来操作整数基本数据类型
中
的单个“比特”(bit),即代进制位。下面通过本文给大家分享
Java
的按位
操作符
,感兴趣的朋友一起看看吧
JAVA
学习-
操作符
.
移位
操作符
移位
操作符
用于对整数进行位移操作,将二进制数向左或向右移动指定的位数。
Java
移位
操作符
讲解
Java
移位
操作符
分为三种:左
移位
操作符
(<<)、有符号右
移位
操作符
(>>)、无符号右
移位
操作符
(>>>) 1、如果对char、byte、short类型的数值进行
移位
操作,那么在
移位
之前,它们会被转换为int类型,并且得到的结果也是一个int类型的值 2、对于int类型数值进行
移位
操作,
移位
数的低5位才是有效的,这样可防
移位
超过int类型所具有的位数(...
Java
移位
操作符
最近正在以
Java
编程思想(第四版)为主要参考书籍补习
Java
基础部分的内容,记录下一些个人认为值得一记的知识点,以供巩固复习,如有理解错误的地方,欢迎大家指正。
移位
操作符
在以前的开发
中
并没有使用过,估计在日常的开发
中
也很少会用到,所以记录下来,以后需要的时候方便查阅。 基本概念
Java
里面的
移位
操作符
总共有以下三种: 左移
操作符
&amp;amp;amp;lt;&amp;amp;amp;lt; (有符号)右移操作..
java
2
移位
成8,彻底弄懂
Java
的
移位
操作符
对于
移位
操作符
,很多人既感到熟悉,又感到陌生。熟悉是因为
移位
操作符
是最基本的
操作符
之一,几乎每种编程语言都包含这一
操作符
;陌生是因为除非是追求极致性能等罕见场景,否则也很难用得上它。打开JDK源码,你会发现
移位
操作符
的身影极为常见,弄清楚它的用法,对阅读源码很有帮助。
移位
操作是把数据看作是二进制数,然后将其向左或向右移动若干位的运算。在
Java
编程语言
中
,
移位
操作符
包含三种,分别是 <>...
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章