Java中位运算,对整数5按位取反怎么算

就是~5怎么算答案是-6,按我的理解是先把5转换成二进制数,然后按位求反,结果得到的答案却不是-6啊。还有按位与,比如5&2怎么算等于0啊,请教高手详细讲解!

转二进制取反得到的也是-6
你再把它转成10进制数就能看到结果了
5(2) = 101
2(2) = 010
&是安位与,两个都是1才得1
所以上面5和2对应1的位数刚好叉开了,&后得到000,也就是0了
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-07-19
5:00000101取反:11111010因为数在计算机里是用补码形式存放的...所以要把11111010看做一段补码现在把补码转化为原码,第一位是符号..不用变..先变成反码..减1就可以..11111001再变为原码10000110,即-6 5&25:000001012:00000010与就是各个位做与运算..1&0=00&0=01&1=1结果就是00000000
第2个回答  2013-07-19
首先确定是8位的二进制..以10为例原码:00001010第一个0仅仅代表这是正数...真正表示10的二进制是后7位...因为是正数..那么反码...补码..都是一样的..即00001010如果是-10的话..首先第一位确定是1..表示是负数..这位是不变的原码是10001010..反码是11110101...补码是11110110在计算机里存放的是补码..11110110

Java中位运算,对整数5按位取反怎么算
转二进制取反得到的也是-6 你再把它转成10进制数就能看到结果了 5(2) = 101 2(2) = 010 &是安位与,两个都是1才得1 所以上面5和2对应1的位数刚好叉开了,&后得到000,也就是0了

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

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

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

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中按位取反 ~4=5 怎么算的 求具体步骤
正数的补码为0100 然后取反 1011,我们知道反码+1=补码,反码就为补码-1,也就是1010,然后取反0101,值已经出来了为5,符号位看补码,补码最高位为0代表正数,最高位为1代表负数,所以答案应该是-5,而不是5 (值多少看原码,符号位看补码)

取反运算是什么意思?
比如说byte类型的5,在内存中是00000101,按位取反后就是11111010 当你再次输出这个数时就变成了250 按位取反就是1变0,0变1 首先你要知道现在我们用的多数都是32位机,所以整形数都是4个字节 那么再看看按位取反的结果:00000000 00000000 00000000 00000101 这是5 00000000 00000000 00000000 ...

javascript按位取反
使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果。例如,假如计算机是32位的,接下来要计算~5的值,计算过程如下:5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101 执行~运算,即~5后: 1111 ...

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

菜鸟求教:java 中的“取补码”问题!?
~ (位运算符),按位非,其运算法则为:如果某个数对应位上是1,则该位上最后得到的结果就是0;反之,如果某个数对应位上是0,则该位上最后得到的结果就是1.也就是有些人说的取反的意思,记住取反是在其转化为二进制后进行的。补码的运算楼主可以看看:2的补码为 2转换为二进制 ~ 0000001...

相似回答