首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言入門筆記(四):進制轉換與位運算完全指南

     編輯:關於C語言

學習緣起:從「最美駭客 MM」到擁抱代碼

一次偶然看到雜誌《中國最美麗的黑客 MM》,原以為駭客是犯罪代名詞,查資料發現早期是褒義詞,頓生崇拜。加了她 QQ 想跟學,但她網站無系統教程。於是大買計算機好書——《C語言的科學與藝術》《C++沉思錄》……名字皆有藝術氣息。按《如何成為一名黑客》指引一步步來,覺得學習本身是快樂。希望大家指正錯誤。Python 先放放,先啃 C、匯編、作業系統、編譯原理,搞懂解釋器底層細節,心裡才有底。理想很簡單:擁抱著天,要瓶可樂,敲鍵盤輸出快樂!

一、進制

為什麼要有進制?

世界萬物需精確標記。射箭比賽:箭太多數不清,靈機一動用 10 根手指計數,滿 10 進一位——這就是十進制由來(出自《深入理解計算機系統》)。十進制特點:任何數可分解為各位數字 × 權值之和(最右權值 1,左遞增 10、100…)。例:3×1000+4×100+5×10+6×1=3456。掌握位權,任意進制轉十進制極簡單。

十進制轉二進制

除 2 取餘,直到商為 0,餘數從下往上讀。

八進制與十六進制

早期電腦用八進制:二進制太長,八、十六進制是二進制倍數(3 位一組、4 位一組),轉換極快。曾見論壇「邪惡八進制」,名字酷,原來由此而來。

二、位運算

六大運算符:&(與)、|(或)、^(異或)、~(取反)、<<(左移)、>>(右移)。

按位與 &

雙方皆 1 結果才 1。用途:
(1) 清零:與 0 做與運算。
(2) 取特定位:構造掩碼,欲取位置 1,其餘 0。

按位或 |

雙方任一為 1 結果為 1。可做全置 1操作,與與運算對稱。

按位異或 ^

相同為 0,不同為 1。任何數異或 0 不變。例:x ^ 0xFF 取低 8 位。

#include <stdio.h>
int main(void) {
    int x = 1992;
    x = x & 0xFF;  // 保留低 8 位
    printf("%d ", x);
    return 0;
}

真有趣!更多妙用待發掘……

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved