Java八种基本数据类型所占字节
数据类型 | 字节数 |
---|
Byte | 1 |
short | 2 |
char | 2 |
float | 4 |
int | 4 |
long | 8 |
double | 8 |
- 1字节(byte,字节)= 8 bit(一个字节表示8位二进制)
- 四类八种数据类型
数据类型 | 种类 |
---|
整数型 | byte short int long |
字符型 | char |
浮点型 | float double |
布尔型 | boolean |
- java中使用Unicode编码,每个字符占两个字节。
二进制转换
移位运算符号
- 左移运算符 <<n
丢弃左边指定位数,右边补0
相当于乘以2n - 右移运算 >>n
丢弃右边指定位数,左边补上符号位。
相当于除以2n - 无符号右移 >>>n
丢弃右边指定位数,左边补上0
对于正数相当于 >>n
对于负数能转为正数
public void testTwoBinary(){
int COUNT_BITS = 29;
int CAPACITY = (1 << COUNT_BITS) - 1;
int RUNNING = -1 << COUNT_BITS;
int SHUTDOWN = 0 << COUNT_BITS;
int STOP = 1 << COUNT_BITS;
int TIDYING = 2 << COUNT_BITS;
int TERMINATED = 3 << COUNT_BITS;
Log.e("dd----","CAPACITY "+CAPACITY+"");
Log.e("dd----","RUNNING "+RUNNING+"");
Log.e("dd----","SHUTDOWN "+SHUTDOWN+"");
Log.e("dd----","STOP "+STOP+"");
Log.e("dd----","TIDYING "+TIDYING+"");
Log.e("dd----","TERMINATED "+TERMINATED+"");
Log.e("dd----","workerCountOf "+workerCountOf(1,33));
Log.e("dd----","runStateOf "+runStateOf(7,33));
Log.e("dd----","ctlOf "+ctlOf(1,33));
}
private int runStateOf(int c, int CAPACITY) {
return c & ~CAPACITY;
}
private int workerCountOf(int c, int CAPACITY) {
return c & CAPACITY;
}
private int ctlOf(int rs, int wc) {
return rs | wc;
}
09-14 23:04:28.334 8082-8082/com.example.user.myapplication E/dd----: CAPACITY 536870911
09-14 23:04:28.334 8082-8082/com.example.user.myapplication E/dd----: RUNNING -536870912
09-14 23:04:28.334 8082-8082/com.example.user.myapplication E/dd----: SHUTDOWN 0
09-14 23:04:28.334 8082-8082/com.example.user.myapplication E/dd----: STOP 536870912
09-14 23:04:28.335 8082-8082/com.example.user.myapplication E/dd----: TIDYING 1073741824
09-14 23:04:28.335 8082-8082/com.example.user.myapplication E/dd----: TERMINATED 1610612736
09-14 23:04:28.335 8082-8082/com.example.user.myapplication E/dd----: workerCountOf 1
09-14 23:04:28.335 8082-8082/com.example.user.myapplication E/dd----: runStateOf 6
09-14 23:04:28.335 8082-8082/com.example.user.myapplication E/dd----: ctlOf 33