导航:首页 > 编程语言 > java1取反0

java1取反0

发布时间:2023-02-27 08:20:17

1. 关于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

2. java中按位取反运算的详解

比如说byte类型的5,在内存中是00000101,按位取反后就是11111010
当你再次输出这个数时就变成了250
按位取反就是1变0,0变1

3. java取反运算符

运算符的优先级!高、
但是equals不是运算符、是个方法。
先计算方法的返回值,然后再!取值

4. java中按位取反运算的详解

按位取反就是每一位都取反,所谓取反就是1变0,0变1
比如楼主说的10
二进制表示就是00000000
00000000
00000000
00001010
取反后就是11111111
11111111
11111111
11110101
这在十进制中就是-11
而他的二进制原码表示就是-1011

5. java中取反操作是正数取反=正数+1取负 负数取反=负数+1取正,那么-1取反是等于0嘛

无符号的32bit整型最大值的二进制编码

有符号32bit二补码编码整内型的-1的二进制编码
是一样的..,就是说容有不少前提。
Java的int是有符号的,只有int被当成无符号的时候,比如转成long的低32bit,
这时32bit最大值和和int的-1的二进制编码一样。

6. 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

7. java编程 按位取反的问题

  1. 这个问题涉及到计算机内部的编码。

对于整数,计算机内部用最高位表回示答符号位,0表示为正,1表示为负。

对于负数,为了便于计算,计算机用补码来表示其值。

已经一个数的补码,要知道其值分两种情况:

1:符号位是0,正数,所以后面的二进制位则表示大小,即正数的原码=其补码。如1表示出来则为00000001(我这里用八位来表示,也可以用16位或32位)

2:符号位是1,负数,这时候需要把后面的数取反再加一(要问为什么?查一下资料吧,可以根据补码的特性推出来),所以11111110表示的数是1111110取反为0000001,再加1,则为0000002。算上符号位,就是-2。


以你的例子来说,

a=0=
~a=

符号位是1,后面的数取反再+1

=-1

8. JAVA中的按位取反什么意思

按位取反
~ 01101101
10010010
结论:对二进制数按位取反,即0变成1,1变成0。

9. Java中取反是怎么算的

5:00000101
取反:11111010
因为数在计算机里是用补码形式存放的...所以要把11111010看做一段补码
现在把补码转化为原版码,第权一位是符号..不用变..先变成反码..减1就可以..11111001
再变为原码10000110,即-6
5&2
5:00000101
2:00000010
与就是各个位做与运算..
1&0=0
0&0=0
1&1=1
结果就是00000000

10. java取反问题

首先,long是64位,抄8字节
计算机中存储袭时高位补0,你取反后高位全部为1,所以是负值。

注意0xFFFFFFFF在Java中被认为是整形常量,所以他会被默认为int类型,32位的,在和long类型进行AND操作时,它会按照最高位(此时为1)进行扩展,即它被机器解释成0xFFFFFFFF FFFFFFFF,这样以来,你的temp等于没有变化。

要想改变上面那种情况,你可以这样写Ox7FFFFFFF,这时最高位为0,被机器解释成0x00000000 7FFFFFFF,AND操作会让temp变成正

不过以上解决方法并不能达到你想要达到的效果,你想要的结果是不是:
只把temp的有效位进行取反,高位不变?

阅读全文

与java1取反0相关的资料

热点内容
pps缓存文件怎么删除 浏览:10
家里网络在用怎么检测 浏览:419
克拉漫播下载的文件名 浏览:417
压缩好的文件哪里找 浏览:831
百度网盘怎样上传文件夹 浏览:320
java发展是 浏览:892
程序编程结束还要做什么 浏览:778
pcb打版文件有哪些 浏览:39
网络原来ip地址忘记了怎么办 浏览:142
iphone6s微信密码设置 浏览:810
java将数字转换成字母 浏览:854
c盘中的哪些是系统文件夹 浏览:668
分布式服务如何跨库统计数据 浏览:829
力控转发数据客户端模式如何建立 浏览:200
怎么样让自己的网站不被别人看到 浏览:711
编程扩展效果如何 浏览:335
荣耀畅玩手环同步qq 浏览:475
怎么向sql中添加数据库 浏览:596
录歌失败重启app什么意思 浏览:522
压缩文件包怎么在微信发送 浏览:432

友情链接