public class Test{
public static void main(String args[]){
int i = 0xFFFFFFF1;
int j=~i;
System.out.println(j);
}}为什么这个程序运行之后j=14。我知道i=-15,可就是在int j=-i这里不知道怎么算的,请各位帮我解决。说出详细的计算过程。
public static void main(String args[]){
int i = 0xFFFFFFF1;
int j=~i;
System.out.println(j);
}}为什么这个程序运行之后j=14。我知道i=-15,可就是在int j=-i这里不知道怎么算的,请各位帮我解决。说出详细的计算过程。
解决方案 »
- jasperreport 报错
- 见鬼了, Java变量赋值的奇怪现象
- 这个线程为何没有交替输出
- 解决立即结贴 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.
- 高手请进:我怎么在JAVA中实现域中用户名,密码的认证?
- object obj=null;和object obj;有什么区别;
- 谁能说说java内存管理机制吗?
- 用新版sun虚拟机,为什么找不到类了?
- 各位兄弟,我是JAVA的新手,请问这样才能把JAVA学的更好
- java新手!!关于用protected修饰的成员内部类的继承问题!!求大神指教!!
- 关于正则获取多个数据!!!!!!
- Java代码 ,有点困惑不解
对i取反
~i=0000 0000 0000 0000 0000 0000 0000 1110=14
JAVA语言中的每条可执行语句最终都将被转换成二进制的机器指令package io;/**
* 我的自己的机器是64bit的,但是我就按照32bit,大众口味。
* 1111-1111-1111-1111-1111-1111-1111-0001
* 0000-0000-0000-0000-0000-0000-0000-1110
*/
public class TestStr {
public static void main(String []args) {
//十六进制转化为二进制
int i = 0xFFFFFFF1;
//~位运算中的非运算。也可以说是按位取反。
//取反后会二进制是:0000-0000-0000-0000-0000-0000-0000-1110
//
int j=~i;
System.out.println("j等于:" + j + "j二进制为:" + Integer.toBinaryString(j));
System.out.println("i二进制为:" + Integer.toBinaryString(i));
//如果取反后+1,值会不变。
System.out.println("i的原始值: " + ~i + 1);
}
}
i二进制为:11111111111111111111111111110001
i的原始值: 141