Java教程

java中的位运算符.按位非.位运算符计算方法

本文主要是介绍java中的位运算符.按位非.位运算符计算方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

按位非~

按位非是将二进制码中0变成1,1变成0.计算机存储数字是用机械码存储的,所以要将所给的整型数字转化成二进制.先以正数为例

eg: 3转化成二进制码就是0000 0000 0000 0000 0000 0000 0000 0011

//3是以Int型存储的,占4个字节,32位.转化后的二进制的第一个数字代表正负,0代表这个数是正数,1代表这个数是负数.且正数的原码,反码,补码是一样的

因为3的原码和补码是一样的,所以3的补码是0000 0000 0000 0000 0000 0000 0000 0011.如果是负数的话要先将原码取反,在转换成补码.(后面有说明)

得到3的补码后再进行按位非计算

补码:0000 0000 0000 0000 0000 0000 0000 0011

按位非计算后:1111 1111 1111 1111 1111 1111 1111 1100

因为二进制码的第一个数是1,代表这个数是负数,如果按位非计算后得到的数是负数,就要将其减一再取反.

减一后:1111 1111 1111 1111 1111 1111 1111 1011

然后再进行取反后:1000 0000 0000 0000 0000 0000 0000 0100,这个就是最后的结果了,转化成十进制数就是-4.附上正数的记忆方法:~(A)=-(A+1)

//负数的反码就是第一个数字不变(符号位不变)后面的每个数都要取反

再举一个负数的例子:eg:-3

-3的原码是1000 0000 0000 0000 0000 0000 0000 0011因为负数想要求补码,要先将原码取反,再求补码,所以先将原码取反:0111 1111 1111 1111 1111 1111 1111 1100,再求补码:0111 1111 1111 1111 1111 1111 1111 1101,因为得到的是正数,所以这个就是结果.

//补码就是反码的基础上再加1

位运算符<<,>>

左移运算符(<<):将数的二进制码全部左移若干位,左边超出的二进制位舍弃,并再末尾补0(左移多少个位就补多少个0),如果数字没有溢出的话,左移n个单位就相当于乘以2的n次方.eg:4<<2的结果位16

右移动运算符(>>):将数的二进制码像右移动若干个位,超出的部分舍弃,空位正数补0,负数补1.eg:7>>2.的结果为1

这篇关于java中的位运算符.按位非.位运算符计算方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!