一、数据类型的位数
sizeof( byte ) == 8
sizeof( boolean ) == 8
sizeof( short ) == 16
sizeof( int ) == 32
sizeof( long ) == 64
sizeof( float ) == 32
sizeof( double ) == 64
sizeof( char ) == 16
二、位运算符
<< 左移位,在低位处补0
>> 右移位,若为正数则高位补0,若为负数则高位补1
>>> 无符号右移位,无论正负都在高位补0
& 与(AND)
| 或(OR)
~ 非(NOT)//一元运算符
^ 异或(XOR)
<<= 左移位赋值
>>= 右移位赋值
>>>= 无符号右移位赋值
&= 按位与赋值
|= 按位或赋值
^= 按位异或赋值。
三、常用计算
- 判断int型变量a是奇数还是偶数
a&1 == 0 //偶数 a&1 == 1 //奇数
- 求平均值
// 直接求(x + y) / 2,x+y可能超过int的最大范围 int x、y; int mid = (x&y)+((x^y)>>1);
- 对于一个大于0的整数,判断它是不是2的几次方
((x&(x-1))==0)&&(x!=0);
- 两个数字互换
x ^= y; y ^= x; x ^= y;
- 求绝对值
int abs( int x ) { int y ; y = x >> 31 ; return (x^y)-y ; } //或者 (x+y)^y
- 取模运算
//a % (2^n) a & (2^n - 1)
- 乘法运算
//a * (2^n) a << n
- 除法运算
//a / (2^n) a>> n
- 求相反数
(~x+1)
- 求a % 2
a & 1