大學學習計算機組成原理的時候這部分非常枯燥,程式設計就會發現這些基礎知識在實際中其實很有趣。
計算機中用補碼來儲存資料,最大的正數為231
−12 31−
1,也就是
0x7fffffff (0111 0000 0000 0000 0000 0000 0000 0000)
,
最小的數為−2
31 −231
,也就是
0x80000000 (1000 0000 0000 0000 0000 0000 0000 0000)
。
1. 補碼可將減法轉化為加法計算,簡化運算器的線路設計。
1) >>(後面丟棄,負數移位前面加1,正數移位前面加0)
正數4>>1 = (0100)>>1 = (0010) = 2
負數-4>>1 = (1100)>>1 = (1110) = -2
2) >>>(正負數移位都加0)
正數4>>>1 = 2
負數-4>>>1 = (0111 1111 1111 1111 1111 1111 1111 1110) = 2147483646
原碼-補碼的運算手算是有點複雜的:
1 如果是正數的話原碼補碼相同
2 負數:首位取1,其他位取反,結尾數再加1.(補碼求原碼同理)
二進位制按位異或。
9^12 = (1001) ^ (1100) = (0101) = 5
需要注意的是a%b,b不能為0,因此作為判斷或條件時,此條件應當優先,否則會報錯。另外,0%b = 0(b非零)。
(***x ***x) & (ff00ff00) 取***x ***x中含1的部分。
a && b中,如果a被判斷為false,則b是不再執行的,因此一定要注意順序問題,或運算相同。
| 也可理解為取並,比如 (***x 0000) | (0000 yyyy) = (***x yyyy)
JAVA運算子部分總結
參加運算的兩個資料,按二進位制位進行 與 運算。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩位同時為 1 結果才為 1 否則為0 例如 3 5 即 0000 0011 0000 0101 0000 0001 因此,3 5的值得1。另,負數按補碼形式參加按位與運算。與運算 的特殊用...
NOT運算子與 運算子
6.4.2 not運算子與 運算子 對於簡單的條件查詢,not運算子與 運算子的功能幾乎沒有什麼區別,那麼not運算子的優勢體現在 呢?答案是它可以與其他運算子組合使用,這一點是 運算子所不能實現的。在6.4.1節已經介紹了not運算子與in運算子組合使用的例子,下面給出乙個not運算子與betwe...
運算子總結
1,算術運算子 加或正號 減或負號 乘 除,得到的是商 取餘 自增 自減 字串連線符 注意 a 整數相除結果還是整數 b 從左向右依次運算 c 兩個運算元,分為左邊和右邊 左邊小於右邊,結果是左邊 左邊等於右邊,結果為0 左邊大於右邊,結果是餘數 最終的餘數的符號和左邊的運算元一直 d 和 如果單獨...