JAVA - 【位運算】Long值分區

//取Long的前三位作爲標誌位
int flag_count = 3;
int capacity_count = Long.SIZE-flag_count;
System.out.println(Long.SIZE);
System.out.println(Long.toBinaryString(-1L<<capacity_count));  //1110 -> RUNNING(運行)
System.out.println(Long.toBinaryString(0L<<capacity_count));   //0000 -> SHUTDOWN(關閉)
System.out.println(Long.toBinaryString(1L<<capacity_count));   //0010 -> STOP(停止)
System.out.println(Long.toBinaryString(2L<<capacity_count));   //0100 -> TIDYING(整理)
System.out.println(Long.toBinaryString(3L<<capacity_count));   //0110 -> TERMINATED(終止)

long RUNNING = -1L<<capacity_count;
long SHUTDOWN = 0L<<capacity_count;
long STOP = 1L<<capacity_count;
long TIDYING = 2L<<capacity_count;
long TERMINATED = 3L<<capacity_count;

long capacity = 0b1111111111111111111111111111111111111111111111111111111111111L;

//值的計數
System.out.println((RUNNING+999L)&capacity); 
//值的狀態
System.out.println(((TERMINATED+1L)&~capacity)>>capacity_count); 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章