java1取反的简单介绍

博主:adminadmin 2022-11-21 23:28:10 77

今天给各位分享java1取反的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

关于JAVA 中取反问题

在2进制中,负数是以它正值的补码形式表达

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

比如

0000

0000

0000

0000

0000

0000

0000

0101是

5的

原码。

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

取反操作指:原为1,得0;原为0,得1。(1变0;

0变1)

比如:将5的二进制表达式的每一位取反,得

1111

1111

1111

1111

1111

1111

1111

1010

称:1111

1111

1111

1111

1111

1111

1111

1010

0000

0000

0000

0000

0000

0000

0000

0101

的反码。

反码是相互的,所以也可称:

1111

1111

1111

1111

1111

1111

1111

1010

0000

0000

0000

0000

0000

0000

0000

0101

互为反码。

补码:反码加1称为补码。

也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

那么,5的补码为:

1111

1111

1111

1111

1111

1111

1111

1010

+

1

=

1111

1111

1111

1111

1111

1111

1111

1011

所以,-5

在计算机中的二进制表达为:

1111

1111

1111

1111

1111

1111

1111

1011

转换为十六进制:0xFFFFFFFB。

====================================

明白了上面的就可以理解怎么求

~i

int型储存32个二进制位,~这个符号是按位取反,就是求i的反码。

即得到1111

1111

1111

1111

1111

1111

1111

1010

上面这串二进制代表一个负数,将它转换成int型过程如下:

1111

1111

1111

1111

1111

1111

1111

1010-1

=

1111

1111

1111

1111

1111

1111

1111

1001

再求反:

0000

0000

0000

0000

0000

0000

0000

0110

这个值就是5的按位取反所得到的int整数的绝对值(注意:5按位取反得到的是负数)

所以转换为int型为:6

即:int型的i=5

取反后的结果为-6

java1取反的简单介绍

Java中取反是怎么算的

5:00000101

取反:11111010

因为数在计算机里是用补码形式存放的...所以要把11111010看做一段补码

现在把补码转化为原码,第一位是符号..不用变..先变成反码..减1就可以..11111001

再变为原码10000110,即-6

52

5:00000101

2:00000010

与就是各个位做与运算..

10=0

00=0

11=1

结果就是00000000

Java 取反运算符

用以下代码可以实现你要求的功能:

long lang=64509;

String str1=Long.toBinaryString(lang);//将给定的数转为二进制字串

String str2=Long.toBinaryString(~lang);//将给定的数取反转为二进制字串

//将取反后的二进制串取最后的 长度与第一个串长度相等 的子串,这是我们需要的二进制串

String str=str2.substring(str2.length()-str1.length());

//将它转换为十进制整数

int i=Integer.parseInt(str, 2);

System.out.println(i);

具体理论知识如下所示:

先要理解一些概念:

在2进制中,负数是以它正值的补码形式表达

原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

比如 0000 0000 0000 0000 0000 0000 0000 0101是 5的 原码。

反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)

比如:将5的二进制表达式的每一位取反,得

1111 1111 1111 1111 1111 1111 1111 1010

称:1111 1111 1111 1111 1111 1111 1111 1010 是 0000 0000 0000 0000 0000 0000 0000 0101 的反码。

反码是相互的,所以也可称:

1111 1111 1111 1111 1111 1111 1111 1010 和 0000 0000 0000 0000 0000 0000 0000 0101 互为反码。

补码:反码加1称为补码。

也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

那么,5的补码为:

1111 1111 1111 1111 1111 1111 1111 1010 + 1 =

1111 1111 1111 1111 1111 1111 1111 1011

所以,-5 在计算机中的二进制表达为:

1111 1111 1111 1111 1111 1111 1111 1011

转换为十六进制:0xFFFFFFFB。

====================================

明白了上面的就可以理解怎么求 ~i 了

int型储存32个二进制位,~这个符号是按位取反,就是求i的反码。

即得到1111 1111 1111 1111 1111 1111 1111 1010

上面这串二进制代表一个负数,将它转换成int型过程如下:

1111 1111 1111 1111 1111 1111 1111 1010-1 =

1111 1111 1111 1111 1111 1111 1111 1001

再求反:

0000 0000 0000 0000 0000 0000 0000 0110

这个值就是5的按位取反所得到的int整数的绝对值(注意:5按位取反得到的是负数)

所以转换为int型为:6

即:int型的i=5 取反后的结果为-6

java中按位取反运算的详解

按位取反就是每一位都取反,所谓取反就是1变0,0变1

比如楼主说的10

二进制表示就是00000000

00000000

00000000

00001010

取反后就是11111111

11111111

11111111

11110101

这在十进制中就是-11

而他的二进制原码表示就是-1011

Java操作中,~按位取反,对于1 (0001) 结果1110 为什么值是 -2 ?

0001取反是1110是显然的而1110是四位补码,最高位是符号位1代表负数,0代表正数后三位是实际的数值位,补码转化为原码要按照“数值位每位取反,末位加一”的原则,故后三位数值110取反加一得到010(原码)即十进制的2由于符号位为1代表负数,故结果为-2

java取反运算符

我是这么理解的,如果按你说的,根据这种情况书上说两个衣服串相等时是false不等时是true说明!是先起作用的,也就是说先取反后进行比较,因为equals是判断前后是否相等,所以如果两个字符串相同,前面取反就是false

java1取反的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、java1取反的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-21,除非注明,否则均为首码项目网原创文章,转载请注明出处。