JAVA基础

Java,二进制运算规则

2019-08-02  本文已影响0人  heheworld

最近调试封装蓝牙指令涉及到二进制运算
备忘:

对应位如果相同,结果为0,否则为1。
示例:

int a = 0x66 ;    
int b = 0xff ;
int c = a^b;

//输出结果 应该是 0x99 
//01100110^11111111=10011001;

参与运算的两位都为1,结果为1,否则为0。
示例:

int a = 0x66 ;    
int b = 0xff ;
int c = a&b;
//输出结果 应该是 0x66 
//01100110&11111111=01100110;

参与运算的两位只要有1位为1,结果为1,否则为0。
示例:

int a = 0x66 ;    
int b = 0xff ;
int c = a|b;
//输出结果 应该是 0xff 
//01100110|11111111=11111111;

当前位为1,则输出0,当前位为0,则输出1。
示例:

int a = 0x66 ;    
int c = ~a;
//输出结果 应该是 0x99,或者 10011001;

将一个运算对象的各二进制位全部左移若干位,左边的二进制位丢弃,右边补0
示例:

int a = 0x66 ;
a = a <<2;
//输出结果 应该是 10011000,

如果左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
示例:

int a = 0x66 ;
a = a >> 2;
//输出结果 应该是 00011001,
//操作数每右移一位,相当于该数除以2

先取绝对值,转成二进制后取反,末位再加一。
示例:

int a = -17;
//输出结果 11101111,或0xef;
//-17 -> 17 -> 00010001 -> 11101110 -> 11101111;
上一篇 下一篇

猜你喜欢

热点阅读