ACM競賽中用到的二進位制處理方法(完善中)
二進位制邏輯運算:
1、邏輯“或”運算:‘|’(以下為程式設計時的符號)
只要兩個值裡面有一個是1也就是真,那麼結果就是1,為真。
2、邏輯“與”運算:‘&’
只有兩個值都是1,也就是都是真的時候,結果才是1,為真。
3、邏輯“非”運算 :‘!’
!1 = 0; !0 = 1;
非真就是假,非假就是真。
4、邏輯“異或”運算 :‘^’(題中一般會寫為xor)
如果兩個值相同,異或為0,不同,異或為1。
具體操作例子:
1、把輸入壓入狀態量
如果c為‘+’,則把1壓入state的某一位中
範例:
字串:+-++—
state:1011000
int state = 0;
for (int i = 0; i < 16; i++) {
char c;
cin >> c;
state <<= 1;
if (c == '+') {
state |= 1;
}
}
2、把二進位制中的一位取反
把c的第x位取反。x從右往左算從0開始。
c = a ^(1 << x);
3、判斷二進位制串中有多少個1
int get_num(int a)
{
int ret = 0;
while (a) {
a &= (a - 1);
++ret;
}
return ret;
}
4、判斷兩個二進位制串是否在相同位置有1
bool fit(int a, int b)
{
if (!(a & b) )return true;
else return false;
}
相關文章
- 二進位制處理技巧
- Git處理二進位制檔案Git
- Java中8進位制和16進位制的表示方法Java
- Python使用struct處理二進位制PythonStruct
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 計算機中的二進位制計算機
- 二進位制中1的個數
- 山東省第四屆ACM大學生程式設計競賽-Alice and Bob(二進位制&&找規律)ACM程式設計
- 【轉帖】Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 二進位制轉十進位制快速方法
- 用shell處理二進位制檔案(轉)
- 某演算法競賽題——把一個二進位制的串轉換為十進位制整數演算法
- C++中的檔案輸入/輸出(5):二進位制檔案的處理 (轉)C++
- 位運算(一):二進位制中1的個數
- 如何檢視錶中的二進位制流
- mysqlbinlog 處理二進位制日誌檔案的工具MySql
- 二進位制轉十進位制快速轉換方法
- Redis中快取二進位制資料Redis快取
- (轉)【iOS 開發】二進位制、十進位制、十六進位制相互轉換的方法iOS
- 5 個找出“二進位制命令”描述和系統中位置的方法
- 前端怎麼處理二進位制檔案下載前端
- 【劍指offer】二進位制中1的個數
- 知多一點二進位制中的負數
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 二進位制與二進位制運算
- JavaScript中的多種進位制與進位制轉換JavaScript
- shell 中轉換16進位制10進位制
- Python處理十六進位制與二進位制轉換的問題——binascii自帶庫PythonASCII
- Python使用struct處理二進位制(pack和unpack用法)PythonStruct
- nodeJS-使用buffer類處理二進位制資料NodeJS
- JS操作二進位制方法 - blobJS
- 二進位制陣列 subarray() 方法陣列
- 進位制詳解:二進位制、八進位制和十六進位制
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- ACM 16進位制的簡單運算ACM
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 【刷演算法】二進位制中1的個數演算法