本文的目的不是為了闡述位操作的原理,而是發現在工作中有些同學清楚位操作,但是不知道什麼時候使用位操作。以下列舉兩個例子簡單說明我們可以使用到位操作的場景,但不一定符合實際業務場景,僅供參考。
1、給40
億個int
型的正整數,沒排過序,然後再給乙個數,如何快速判斷這個數是否在那
40
public class a
byte mod = (byte) (i % 8);
int div = (int) (i / 8);
int index = (int)(mod == 0 ? div - 1 : div);
barray[index] = (byte) (barray[index] | (1 << mod));
} }/**
* 在40億個數當中查詢乙個數字是否存在
* 如果n對應的位在barray的值是1,則表明數字存在
* * @param n 要查詢的數
* @return 如果要查詢的數在40億中存在,返回true,否則返回false
*/public boolean find(long n)
public static void main(string args)
}
2、假設乙個訂單有三組狀態需要記錄,分別是付款狀態、發貨狀態、簽收狀態,我們可以在類裡用三個屬性來表示(一般來說都是這麼做的),這裡我們用另外一種方式用乙個屬性將所有狀態表示出來(這麼做之前要仔細考慮是否符合業務需求)
public class order
//發貨
public void send()
//簽收
public void receive()
//獲取已付款狀態
public boolean haspaid()
//獲取已發貨狀態
public boolean hassent()
//獲取已簽收狀態
public boolean hasreceived()
//main()
public static void main(string args)
}//訂單狀態列舉類
enum status
private byte value;
public byte getvalue()
}
位操作的基礎與應用舉例
通過在leetcode上面做題發現,位操作是乙個非常實用但是容易被忽略的技巧。所以在這篇文章中歸納常用的位操作基礎和技巧,並通過例子來直觀地理解位操作的實際應用。在計算機中所有資料都是以二進位制的形式儲存的。位運算其實就是直接對在記憶體中的二進位制資料進行操作,因此處理資料的速度非常快。在實際程式設...
java中的Timer用法 二 使用舉例
1,code example privatetimer mtimer private voidstarttimer mtimer newtimer mtimer.schedule newtimertask 100,1000 private voidstoptimer private voidtest...
java中super,this的用法舉例
eg1 class person person person string name public class chinese extends person chinese string name chinese string name,int age public static void main...