java中按位取反 ~4=5 怎么算的 求具体步骤

如题所述

正数的补码为0100

然后取反 1011,我们知道反码+1=补码,反码就为补码-1,也就是1010,然后取反0101,值已经出来了为5,符号位看补码,补码最高位为0代表正数,最高位为1代表负数,所以答案应该是-5,而不是5
(值多少看原码,符号位看补码)
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-25
错了吧,等于-5吧
第2个回答  2018-03-08
~4 只要记住求 “~” 的时候,先给原数字加1,然后取反方向就行了。这个都已经有总结出来的现成的计算方法了,就像数学公式一样,有必要自己去移动么?
比如~4,4+1=5,取反方向,就是-5。
再比如 ~(-4),-4+1=-3,反方向,就是3。
第3个回答  2018-05-24
按位取反,包括高位。(要根据8421码来看)

~是位运算符也叫单目运算符,直接操作的是二进制。

4是int类型

4的原码(也是补码、反码):
00000000 00000000 00000000 00000100
运算以 补码 运算的。
4是正数,正数的原码、反码、补码都是一样

对4取反(包括高位,参考4的反码取反):
11111111 11111111 11111111 11111011

System.out.println(~4)//结果为什么是-5呢?

11111111 11111111 11111111 11111011意思是这个取反的结果代表-7,是-7的补码,
根据 补码 先求反码 ,再求原码。
证明它是-5就可以了。

先求反码(减1)
11111111 11111111 11111111 11111011
- 00000000 00000000 00000000 00000001
--------------------------------------------
11111111 11111111 11111111 11111010

再根据反码求原码。

负数的反码 是对其原码 逐位取反,
但!但符号位 除外!

-5的原码:(用8421码看结果)
10000000 00000000 00000000 00000101

最高位是1,代表负数。
最高位是0,代表正数。
最终结果为(-5)
第4个回答  2012-11-15
刚考的 求反就是各位求反,然后 1

Java中位运算,对整数5按位取反怎么算
5在内存中是0000 0101 2在内存中是0000 0010 按位与 & 0000 0000

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

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

按位取反怎么算
按位取反算法是将待计算的数用2进制表示,位数最少的二进制位数加1。取反是Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。取反先将初始数值转换成二进制数,再对二进制数的每一位(包括第一位的符号位)进行运算:即将0变为1、将1变为0。得到的是最...

java语言里面的运算符~是什么意思
意思是按位取反 举个例子就明白了 int a = 4;~a的结果就是-5 过程如下:4的二进制表示为00000000 00000000 00000000 00000100 每一位取反后结果为 11111111 11111111 11111111 11111011 取反后第一位是1,为符号位,所以是负数,上面这个两进制表示的就是-5 希望能帮到你。。。

java中~5如何计算,求过程。
~是按位取反,写出5的二进制,然后每一位反过来就可以了,5的二进制如下:00000000 00000000 00000000 00000101 按位取反后得:11111111 11111111 11111111 11111010 即-6

在java中~5具体计算过程,万分感谢!
5 二进制 00000101 取反~5 二进制 11111010(此时以-6的补码存在)再取反为 10000101 再加1为 10000110(-6)负数补码取反再加1等于负数原码

java中算术运算
-5:5用二进制表示:0101;按位取反:1010;1011:末尾加1.将以上补码相加:1000 + 1011 --- 10011 计算机中2进制转10进制:以0开头的,直接将2进制转换为10进制 以1开头的,需四部,按位取反,末尾加1,转换为10进制,加负号;10011:按位取反:01100;末尾加1:01101;转换为10进制:13...

JAVA中“~”按位取反运算符的一些问题。
首先你要知道现在我们用的多数都是32位机,所以整形数都是4个字节 那么再看看按位取反的结果:00000000 00000000 00000000 00000101 这是5 00000000 00000000 00000000 00000000 这是0 11111111 11111111 11111111 11111111 这是-1 11111111 11111111 11111111 11111110 这是-2 11111111 11111111 11111111 11111...

JAVA位运算怎么用的???
Java 位运算 Java 位运算[转]一,Java 位运算1.表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。 (l)正数的最高位为0,其余各位代表数值本身(二进制数)。 (2)对于负数,通过对该数绝对值的补码按位取反,再对...

相似回答