当前位置:天才代写 > tutorial > JAVA 教程 > Java编程那些事儿25—位运算符

Java编程那些事儿25—位运算符

2017-11-12 08:00 星期日 所属: JAVA 教程 浏览:321

副标题#e#

4.5 二进制运算符

由于计较机内部的数据都以二进制的形式存在,所以在Java语言中提供了直接操纵二进制的运算符,这就是下面要讲授的位运算符和移位运算符。

利用二进制的运算符,可以直接在二进制的基本上对数字举办操纵,执行的效率比一般的数学运算符高的多,该类运算符大量合用于网络编程、硬件编程等规模。

二进制运算符在数学上的意义较量有限。

在Java代码中,直接书写和输出的数值默认是十进制,Java代码中无法直接书写二进制数值,可是可以书写八进制和十六进制数字,八进制以数字0开头,譬喻016,十六进制以数字0和x开头,譬喻0x12,0xaf等等。

在计较二进制运算时,Java语言的执行情况(JRE)首先将十进制的数字转换为二进制,然后举办运算。假如输出功效的值,则数字会被转换成十六进制举办输出。

需要留意的是:

1、正数的呆板数是原码,负数的呆板数是补码,计较时需要小心。关于二进制和补码的计较可以参看《Java编程那些事儿7——进制的观念》和《Java编程那些事儿8——计较机内部的数据表达》。

2、整数型的计较功效都是int型,而不管是对byte照旧short举办二进制运算。

4.5.1 位运算符

Java语言中的位运算符主要有4种:&(位与)、|(位或)、^(异或)和~(按位取反),下面依次先容运算法则和利用示例。

l&(AND)

运算法则:参加运算的数字,低位对齐,高位不敷的补零,对应的二进制位都为1,则运算功效为1,不然为0。

合用场所:屏蔽数字中某一位或某些位。因为任何数和0与都是0。

示例代码:

int a = 4;
int b = 10;
int c = a & b;

计较进程:

4的二进制形式为0000 0000 0000 0000 0000 0000 0000 0100

10的二进制形式为0000 0000 0000 0000 0000 0000 0000 1010

凭据计较法则,功效为0000 0000 0000 0000 0000 0000 0000 0000

这个数字转换为十进制就是数字0

l| (OR)

运算法则:参加运算的数字,低位对齐,高位不敷的补零,对应的二进制位有一个为1则为1,不然为0。

合用场所:将数字中某一位或某些位修改成1。因为1和任何数或都是1。

示例代码:

int a = 4;
int b = -10;
int c = a | b;

计较进程:

4的二进制形式为0000 0000 0000 0000 0000 0000 0000 0100

10的二进制形式为1111 1111 1111 1111 1111 1111 1111 0110

凭据计较法则,功效为1111 1111 1111 1111 1111 1111 1111 0110

这个二进制数转换为十进制就是数字-10。


#p#副标题#e#

l^(XOR)

运算法则:参加运算的数字,低位对齐,高位不敷的补零,对应的二进制位沟通为零,不沟通为1。

合用场所:判定数字对应的位是否沟通。

示例代码:

int a = 4;
int b = 10;
int c = a ^ b;

计较进程:

4的二进制形式为0000 0000 0000 0000 0000 0000 0000 0100

10的二进制形式为0000 0000 0000 0000 0000 0000 0000 1010

凭据计较法则,功效为0000 0000 0000 0000 0000 0000 0000 1110

这个数字转换为十进制就是数字14

l~(NOT)

运算法则:只操纵一个数字,将该数字中为1的位酿成0,为0的位酿成1。

合用场所:反转数字的内容

示例代码:

int a = 4;
int c = ~a;

计较进程:

4的二进制形式为0000 0000 0000 0000 0000 0000 0000 0100

凭据计较法则,功效为1111 1111 1111 1111 1111 1111 1111 1011

这个数字转换为十进制就是数字-5。

其实位运算和实际的应该实现保持一致,也就是提供的电路级运算标记,每种运算符都有对应的电路实现。

实际利用简朴示例:

l把任意数字转换为正数

假设n是一个任意的整数,则把n转换为正数的代码为:

int m = n & 0x7fffffff;

l判定任意数字倒数第三位的值是否为1

假设n是一个任意的整数,则判定的代码为:

int m = n & 0x4;
boolean b = (m != 0);

l将任意数字倒数第四位置为1

假设n是一个任意的整数,则代码为:

int m = n | 0x8;

文章来历:http://blog.csdn.net/Mailbomb/archive/2008/05/29/2492361.aspx

 

    关键字:

天才代写-代写联系方式