java中的位运算符

在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、带符号右移(>>)和无符号右移(>>>)。

java中的位运算符_第1张图片

位运算符是对long、int、short、byte和char这5种类型的数据进行运算的,我们不能对double、float和boolean进行位运算操作。

byte a = 10;

a & (byte )0xFF: 结果就是a的值。

a | (byte )0xFF: 结果就是255的值。

a & (byte )0x00: 结果就是0的值。

a | (byte )0x00: 结果就是a的值。

Java 如何判定字节变量a是否符合某个指定的格式,如:0xxxxxxx,110xxxxx,1110xxxx,11110xxx,10xxxxxx。

确定指定位置为0是否符合格式的方法:将指定格式中的x和1都用0替换,0用1替换,得到的字节b与a变量进行与运算,如果结果为0,则说明a变量的补码中的0是符合格式的,但1不一定。

如果(a & (byte)0x80) == 0 为true,则a符合0xxxxxxx格式。(b=(byte)0x80)

如果(a & (byte)0x40) == 0 为true,则a符合x0xxxxxx格式。

如果(a & (byte)0x20) == 0 为true,则a符合xx0xxxxx格式。

如果(a & (byte)0x10) == 0 为true,则a符合xxx0xxxx格式。

如果(a & (byte)0x08) == 0 为true,则a符合xxxx0xxx格式。

确定指定位置为1是否符合格式的方法:将指定格式中的x都用0替换,原来的0和1保持不变,得到的字节b与a变量进行与运算,如果结果为b,则说明a变量的补码中的1是符合格式的,但0不一定。

如果(a & (byte)0x80) == (byte)0x80 为true,则a符合1xxxxxxx格式。

如果(a & (byte)0xC0) == (byte)0xC0为true,则a符合11xxxxxx格式。

如果(a & (byte)0xE0) == (byte)0xE0 为true,则a符合111xxxxx格式。

如果(a & (byte)0xF0) == (byte)0xF0 为true,则a符合1111xxxx格式。

如果(a & (byte)0xF8) == (byte)0xF8 为true,则a符合11111xxx格式。

必须同时满足0和1位置都符合,才可以确定变量a是符合指定格式的。

你可能感兴趣的:(总结,java,位运算)