按位取反: ~
unsigned
char tmp =2;
printf
("%d"
,~tmp)
;
2的二進位制是:0000 0010
取反後:1111 1101 解釋成補碼為:(等價於原碼1000 0011 = -3)
按位與:&
只有1 & 1 = 1, 其他都為0 , 即:全1為1,有0則0按位或:|
只有0 | 0 = 0, 其他都為1,即:全0為0,有1則1按位異或: ^
相同為0, 相異為1
0 ^ 0 = 0,1 ^ 1 = 0
0 ^ 1 = 1, 1 ^ 0 = 1
&
的應用:掩碼mask
不論是0還是1,和0進行與運算為0,和1進行與運算不變:
因此與
上mask後,0對應的位被消去,只有1對應的位保留:類似於用0掩蓋住原二進位制串上對應的位:結果是只有1對應的位被保留,其餘的位為0;
檢查位
目的:檢查mask中1對應位是否為1
先用掩碼(與上mask),得到第一次處理後的二進位制串(其餘不相干的位置為0),然後==判斷是否與mask相等:若相等說明mask中1對應的位也都是1,否則有的位檢查失敗
return
(a & mask)
== mask ? true : false;
關閉位(清空位)
類似於掩碼:用&將0對應位清空(置為0),一般先將mask取反,mask中1的位就是要關閉的位
a &
=~mask;
|
的應用:開啟位(設定位)
無論0還是1,和1進行或運算為1:
因此或
上mask後,可將特定位置為1(on),用於對特定硬體傳送開啟命令
a |
= mask;
^
的應用:切換位
無論0還是1,與0異或不變,與1異或「翻轉」:
因此異或
上mask後,可將mask中1對應的位翻轉
a ^
= mask;
a << n //a左移n位
a >> n;
//a右移n位
a << n;
// 左移一位相當於*2: 左移n位相當於*2^n
a >> n;
// 如果a非負,右移一位相當於/2:右移n位相當於/2^n
可以利用移位+掩碼:來提取某個或某些位
獲得int 的二進位制:並實現將低n位翻轉的函式
#include
#include
//提供char_bit:本機乙個位元組的位數(通常為8)
第十五章預習
public class yuxi15 else 字串的比較 字串1.equals 字串2 比較兩個字串的值是否相同,返回boolean型別的值.如果相同,則返回真值,否則返回假值.字串1.equalsignorecase 字串2 忽略大小寫比較字串1和字串2.如果都相同則返回真值 否則返回假值 改...
learn with python 第十五章 繼承
第十六章 繼承 16.1繼承 物件導向語言所擁有的特性是繼承,繼承指定義乙個新的類擁有原來類的方法。繼承最大的好處就是可以在不改變現存 的情況下新增新的方法,稱之為繼承是因為新定義的類擁有父類的所有方法。新建立的類知之為子類。繼承是乙個功能強大的特性,某些情況下如果沒有繼承,一些層序幾乎無法實現。同...
第十五章 磁碟管理
uuid 掛載點swap 產品型別swap 掛載選項預設值default 預設不檢測,檢測順序 0 0 檢視分割槽 swapon s s表示show 手動掛載 swapon dev sda3 缺點 重啟後就消失,想永久生效,寫配置檔案 解除安裝分割槽 swapoff dev sda3 vim etc...