社区
Java SE
帖子详情
JAVA中为何~1等于-2,~0等于-1呢????不懂这是为什么。
pop3696
2007-02-26 10:42:53
刚学,不懂
...全文
1662
8
打赏
收藏
JAVA中为何~1等于-2,~0等于-1呢????不懂这是为什么。
刚学,不懂
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
不明白说什么
JAVA
中
为什么(byte)255=-1
byte的取值范围 byte类型占8个字节除了第一位为符号位(“1”表示负“0”表示正)其余7个字节表示数值。 取值范围为111111111~011111111 可能会认为是-127到127 但是由于00000000和10000000表示0和-0,都表示0没有意义,所以让10000000表示-128 所以byte的取值范围为-128到127 原码,补码,反码的转换 计算机
中
数值是以补码的形式储存(便于计算机计算,不深究) 正数 原码,补码,反码都一样。 负数 反码是原码的基础上符号位不变,数值位取反 补码在
惭愧!直到今天才真正明白为什么int型的取值范围是-2^31~2^31-1
个人博客:The Blog Of WaiterXiaoYY 欢迎来互相交流学习。 前言 虽然之前学过《计算机组成原理》,也理解了原码、补码、反码等东西,但终究还是理解不够深刻, 最近在做位运算类型的题目的时候,脑子突然闪过到一个问题, 为什么 int 型数据类型的取值范围不对称呢? 为什么最大值是 2^31 - 1呢? 为什么最小值是 -2^31,而不是-2^31 + 1呢? 正如标题
中
所说,...
Java
1==
Java
2?
Java
1:
Java
2问题
今天写过一段代码,然后通过技术经理的代码评审后,对这段代码进行了很大的优化,原本4行优化成1行,经验还是重在积累~分享一下~希望自己越来越
懂
很多~~加油如下图: String userNos=(
java
1==
java
2)?
java
1:
java
3;这一行代码相当于注释的代码,这行代码是优化后的写法。不造你是否get了这个新技能呢?~~~...
如何安装
JAVA
IDE IDEA?什么是IDE? 什么是集成开发环境? 为什么要配置环境?什么是环境变量?IDE和SDK有什么关系?如何安装
JAVA
的IDE ?
省略配置过程~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~看到没有 ----------------------我们的
java
.exe所在目录为:D:\
Java
\jdk-16.0.2\bin。但是我们的
java
文件是安装在D盘的 你用c盘的命令去运行 按理说是肯定找不到的。你看这个
java
命令的执行是在C盘下执行的 所以执行失败了。好了假设我们现在已经配置完成了。
你真的
懂
Java
怎么输出Hello World吗?
你真的
懂
Java
怎么输出Hello World吗?1. 你会不会输出"Hello World!"?2. 小生抛砖引玉,欢迎指正3. 总结 1. 你会不会输出"Hello World!"? 当我们学习一门编程语言的时候,我们都会先学如何输出Hello World! ????:“你真的会吗?” ????:“会!” ????:“以下这几个例子,我背都给你背下来!!!!”【骄傲】 C语言 printf("Hello World!"); C++语言 cout << "Hello World!";
Java SE
62,633
社区成员
307,265
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章