前言:雖說這是件小事兒,但本寶寶思前想后,還是為它留下一筆,嘿嘿。反正寫博客不浪費紙和筆!好久沒有開啟我的逗比模式了,我親愛的乖徒弟DBA,DBB,DBAA等,好久不見你們,遙祝幸福快樂+DB。 整個事情其實使這樣的,最近的項目中,有一個表,最終是這樣的:一共3位,每一位的取值是1和0(額 ...
通常 我們的數據表中 可能會包含各種狀態屬性, 例如 blog表中,我們需要有字段表示其是否公開,是否有設置密碼,是否被管理員封鎖,是否被置頂等等。 也會遇到在后期運維中,策划要求增加新的功能而造成你需要增加新的字段。 這樣會造成后期的維護困難,數據庫增大,索引增大的情況。 這時使用位運算就可以巧妙的解決。 例如 公開blog 給status進行或運算UPDATE blog SET status ...
2016-10-24 18:26 0 3434 推薦指數:
前言:雖說這是件小事兒,但本寶寶思前想后,還是為它留下一筆,嘿嘿。反正寫博客不浪費紙和筆!好久沒有開啟我的逗比模式了,我親愛的乖徒弟DBA,DBB,DBAA等,好久不見你們,遙祝幸福快樂+DB。 整個事情其實使這樣的,最近的項目中,有一個表,最終是這樣的:一共3位,每一位的取值是1和0(額 ...
在處理整形數值時,可以直接對組成整形數值的各個位進行操作。這意味着可以使用屏蔽技術獲得整數中的各個位包括:&(與)、|(或)、^(異或)、~(非/取反)(與:兩個數都為1結果為1,或:兩個數有一個為1結果為1,異或:二者不同時結果為1異或,可以理解為不進位加法:1+1=0,0+0=0,1 ...
前言 日常開發中位運算不是很常用,但是巧妙的使用位運算可以大量減少運行開銷,優化算法。舉個例子,翻轉操作比較常見,比如初始值為1,操作一次變為0,再操作一次變為1。可能的做法是使用三木運算符,判斷原始值為1還是0,如果是1,設置為0,否則設置為0.但是使用位運算,不用判斷原始值,直接改變值就可以 ...
熟悉 C 或者 C++ 的同學一定對位操作符不陌生。位操作符最主要的應用大概就是作為標志位與掩碼。這是一種節省存儲空間的高明手段,在曾經內存的大小以 KB 為單位計算時,每多一個變量就是一份額外的開銷。而使用位操作符的掩碼則在很大程度上緩解了這個問題: #define LOG_ERRORS ...
先預知識: 數據在計算機中是以二進制的形式進行存儲的,而二進制在內存中是以補碼的形式進行存儲的。在介紹位運算之前,首先來看一下原碼、反碼和補碼的概念。由於正數的原碼、反碼和補碼的形式都是一樣的,所以以下主要針對負數進行講解。 原碼:在數值前直接加一符號位的表示法。 反碼:原碼的數值 ...
參考: https://zhuanlan.zhihu.com/p/404138226(知乎:位運算符的含義) https://www.jianshu.com/p/f0dbabf5f08c(簡書:運算符的基本使用) 位運算符 1,共7種位運算符&,|,^,~,<<,> ...
感覺位運算操作符雖然在平時用得並不多,但是在涉及到底層性能優化或者使用某些trick的時候還是比較有意思。 &(AND) |(OR) 就不提了最常用的東西 會編程就會。 &操作的話是當 兩個數需要同時為1的時候才會保留。 例如 0000 0100 & ...
一、整數的基礎知識 1. int在內存中占4個字節,32位。 2.int在內存中以補碼的形式表示。 1)正數的原碼、反碼、補碼都是一樣的。 2)負數的補碼=負數的原碼除符號位外取反,然后加1 所以,在內存中,-1和1的表示差別不僅僅在符號位。 二、右移運算符 右移運算符指高位 ...