將二進制數中的每位數字1或0代表著某種開關標記,1為是,0為否,則一個數字可以代表N位的開關標記值,可有效減少過多的變數定義 或 過多的表欄位,同時也能在一些復雜的組合判斷場景下利用位與、位或、異或等位運算實作簡單高效的邏輯判斷
如下是JAVA版位運算工具類,沒啥技術含量,主要是運用:位移、位與、位或、異或 運算,如果對位運算操作不清楚的可以閱讀我之前的文章:簡簡單單學會C#位運算 - 夢在旅途 - 博客園 (cnblogs.com) --雖是C#,其實原理都一樣,與語言無關,
/**
* @author zuowenjun
* @description 位運算工具
* 用途:將二進制數中的每位數字1或0代表著某種開關標記,1為是,0為否,則一個數字可以代表N位的開關標記值,可有效減少過多的變數定義 或 過多的表欄位
*/
public class BitUtils {
/**
* 獲取二進制數字中指定位數的結果,如:1011,指定第2位,則結果是0,第3位,則結果是1
*
* @param num 二進制數(可以十進制數傳入,也可使用0b開頭的二進制數表示形式)
* @param bit 位數(第幾位,從右往左,從0開始)
* @return
*/
public static int getBitFlag(long num, int bit) {
return (int) num >> bit & 1;
}
/**
* 更新二進制數字中指定位的值
*
* @param num 二進制數(可以十進制數傳入,也可使用0b開頭的二進制數表示形式)
* @param bit 位數(第幾位,從右往左,從0開始)
* @param flagValue 位標記值(true=1,false=0)
* @return
*/
public static long updateBitValue(long num, int bit, boolean flagValue) {
if (flagValue) {
//將某位由0改為1
return num | (1 << bit);
} else {
//將某位由1改為0
return num ^ (getBitFlag(num, bit) << bit);
}
}
/**
* 將數字轉換為二制值形式字串
*
* @param num
* @return
*/
public static String toBinaryString(long num) {
return Long.toBinaryString(num);
}
}
MYSQL 的SQL陳述句也可以使用位運算進行查詢或更新欄位的操作哦,用法可自行查網路相關資料,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/494351.html
標籤:其他
上一篇:淺聊Mybatis是怎么掃描并且注入到spring容器中的(原始碼向)
下一篇:手動生成dump檔案的方法分享
