1. 编程学习网 > 编程教程 > java教程 > 第十三篇 运算符-3

第十三篇 运算符-3

六、众所周知,数据在计算机中都是以二进制形式存储的。位运算符即是对那些数据进行位运算用的。
那么什么是位运算了?在讲解位运算之前,我们需要了解一下原码、反码和补码的概念。原码即是数据的二进制形式加上一位符号位(左边最高位即为符号位,0表示正数,1表示负数)。例:正数6的原码是0000 0110、负数6的原码则为1000 0110。正数的反码与原码相同,负数的反码则是符号位不变,其余位取反。例:正数6的反码是0000 0110、负数6的反码则为1111 1001。正数的补码也与原码相同,反码即末位加一。例:正数6的补码是0000 0110、负数6的补码则为1 1111 1010。
位运算即是对数据二进制数据的每一位进行操作。
public class BitOperation{
    public static void main(String[] args){
        int one,two;
        one=6;
        two=7;
        System.out.println("one&two="+ (one&two));
        System.out.println("one|two="+ (one|two));
        System.out.println("~one="+ (~one));
        System.out.println("one^two="+ (one^two));
        System.out.println("one<<1="+ (one<<1));
        System.out.println("one>>1="+ (one>>1));
        System.out.println("one>>>1="+ (one>>>1));
    }
}


(二进制形式示例)
上面是“按位与、按位或、按位取反、按位异或”的二进制运算示例。除了这四种位运算符
之外,还有“<<、>>、>>>”三种移位运符。移位运算符可对数据的二进制数据进行移位
操作。以表达式“(one<<1)”为例,左操作数的二进制数据根据右操作数指定的位数进行移
位操作,表达式“(one<<1)”的意思即是one的二进制数据往左移一位。

左移运算符空余部分补0,右移运算则是根据数据的最高位来确定空位补0还是补1。比如,
数据最高位为1,右移空位则补1,为0则补0。无符号右移”>>>”与右移“>>”相比,
则是不论最高位是1还是0,被移空位都以0补入。
七、三元运算符(又称条件运算符)”?:”即有三个元素(操作数)的运算符,其格式为”条件
表达式?操作数1:操作数2”。三元运算符会根据条件表达式返回的布尔值来判断是执行
操作数1还是操作数2。若为true执行操作数1,为false则执行操作数2。
public class Ternary{
    public static void main(String[] args){
        int one,two,three;
        one=6;
        two=7;
        
        three=(one>two)?8:9;
        System.out.println("three="+ three);
    }
}

例程里利用三元运算来判断对变量three是赋值8还是赋值9。变量one值为6并不大于变
量two,返回布尔值false,执行操作数2,给变量three赋值9.
运算符之间还有优先级的区别,表达式中的执行顺序,一般都是根据运算符优先级高低
来执行的。



本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/java/447.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休