Java基础---二进制常用运算

时间:2023-02-17 16:03:52

                二进制常用运算

简介:

    逻辑变量之间的运算称为 逻辑运算二进制数1和0在逻辑上可以代表“真”与“假”、“是”与“否”、“有”与“无”。这种具有逻辑属性的变量就称为 逻辑变量。 计算机的逻辑运算的 算术运算的主要区别是:逻辑运算是按位进行的,位与位之间不像加减运算那样有进位或借位的联系。
逻辑运算主要包括三种基本运算:逻辑加法(又称“或”运算)、逻辑乘法(又称“与”运算)和逻辑否定(又称“非”运算)。此外,“异或”运算也很有用。 --摘自百度百科
 

详细介绍:

1.按位与&

  两位全为1,结果才为1. 例:0&1=0 1&1=1

  作用:

  1.清零

     2.取一个数中指定数: 例:X=10101110 取X得低四位。 X&00001111=0000 1110

2.按位或 |

 只要有一个位1,结果就位1.

 作用:常用来对一个数据的某些位 置1.  例:X=00001001 使X低四位为1 X|0000 1111=00001111

3.异或运算^

 两个相应位为"异"(值不同),则该位结果为1,否则为0.

 作用:1.使特定位翻转,找一个数,对应X要翻转的各位,该数的对应位为1,其余位为0,此数与X对应位 异或即可。

        例:X=10101110 使X低四位翻转

     X^0000 1111=10100001

    2.与0相异或,保留自身原值。(应用在两个变量交换值,效率最高)

    例:A=A^B,B=A^B,A=A^B 这样A和B的值就交换了。

4.取反运算~

对一个二进制数按位取反。~0=1

       例:在java中对有符号int型数取反运算。

  注:在java中有符号整数都是用补码表示的。

  所以我们还需要了解补码的知识:

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

    反码

    1.正数的反码与其原码相同;
    2.负数的反码是对其原码逐位取反,但符号位除外。
    原码10010= 反码11101 (10010,1为符号码,故为负)
    (11101) 二进制= -2 十进制
     补码
    补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
取反方法:1.对正数:先对其表示的二进制取反,得到负数的补码;然后求出反码,最后求出原码。(即为所求数)
     例:~3
        java中int类型的长度是四个字节,也就是32位,so:
              00000000 00000000 00000000 00000011 
        取反:     1...                                         11111100  最高位为1,所以这是负数的补码形式。
        求出反码: 1...                                         11111011
               求出原码:   0...                                         00000100  数字为4
        之前此数的补码最高位为1,所以 ~3=-4
     2.对负数:先求负数的补码,然后直接取反。(注意最高位1代表负数,0代表整数)。
 
此篇为复习基础知识所写。