C語言第九節進製

2022-07-04 01:57:12 字數 3284 閱讀 6060

數一下方塊的個數

漢字:十一 十進位制:11 二進位制:1011 八進位制:13

特點:只有0和1,逢2進1

書寫格式:0b或者0b開頭

使用場合:二進位制指令\二進位制檔案,變數在記憶體中就是二進位制儲存

二進位制和十進位制的互相轉換

n為二進位制位所能表示的資料範圍(不考慮負數):0~2的n次方-1

特點:0~7,逢八進一

書寫格式:0開頭

八進位制和二進位制的互相轉換

特點:0~f,逢十六進一

書寫格式:0x或者0x開頭

十六進製制和二進位制的互相轉換

mac中計算器的使用

printf以不同進製形式進行輸出

1> 判斷下列數字是否合理

00011 0x0011 0x7h4 10.98 0986 .089 -109

+178 0b325 0b0010 0xffdc 96f 96.0f 96.0f

-.003 15.4e6 10e8.7 7.6e-6

2> 分別寫出它們的十進位制、八進位制、十六進製制

0b0011 1101 0b0111 1011

3> 寫出它們的二進位制

67 056 0x004f

研究變數在記憶體中的具體儲存情況

為了更好地理解變數在記憶體中的儲存細節,先來認識一下記憶體中的"位元組"和"位址"。

記憶體以"位元組為單位"

不同型別占用的位元組是不一樣的

所占用位元組數跟型別有關,也跟編譯器環境有關

變數例項

int b = 10;

int a = 134;

檢視整數的二進位制形式

// 輸出整數的二進位制形式

voidputbinary(intn)

printf("\n");

}乙個位元組的取值範圍

負數的表示形式

原碼、反碼、補碼

寫出下列變數在記憶體中的儲存情況

但是我實際操作過程中的位元組數和上面的圖不一致

電腦配置

1> short和long可以提供不同長度的整型數,也就是可以改變整型數的取值範圍。在64bit編譯器環境下,int占用4個位元組(32bit),取值範圍是-231~231-1;short占用2個位元組(16bit),取值範圍是-215~215-1;long占用8個位元組(64bit),取值範圍是-263~263-1

2> 總結一下:在64位編譯器環境下,short佔2個位元組(16位),int佔4個位元組(32位),long佔8個位元組(64位)。因此,如果使用的整數不是很大的話,可以使用short代替int,這樣的話,更節省記憶體開銷。

3> 世界上的編譯器林林總總,不同編譯器環境下,int、short、long的取值範圍和占用的長度又是不一樣的。比如在16bit編譯器環境下,long只占用4個位元組。不過幸運的是,ansi \ iso制定了以下規則:

4> 可以連續使用2個long,也就是long long。一般來說,long long的範圍是不小於long的,比如在32bit編譯器環境下,long long占用8個位元組,long占用4個位元組。不過在64bit編譯器環境下,long long跟long是一樣的,都占用8個位元組。

5> 還有一點要明確的是:short int等價於short,long int等價於long,long long int等價於long long

1> 首先要明確的:signed int等價於signed,unsigned int等價於unsigned

2> signed和unsigned的區別就是它們的最高位是否要當做符號位,並不會像short和long那樣改變資料的長度,即所佔的位元組數。

功能 只有對應的兩個二進位均為1時

,結果位才為1,

否則為0。

舉例:比如9&5,

其實就是1001&101=1,

因此9&5=1

規律 功能

只要對應的二個二進位有乙個為1時

,結果位就為1,

否則為0。

舉例:比如9|5,

其實就是1001|101=1101,

因此9|5=13

1> 功能

當對應的二進位相異

(不相同)時

,結果為1,

否則為0。

2> 舉例:比如9^5,

其實就是1001^101=1100,

因此9^5=12

3> 規律

對整數a的各二進位進行取反,符號位也取反

(0變1,1變0)

在不用引入其他變數的情況下,使用位異或^運算子實現兩個變數值的互換

使用位與&運算子變數的奇偶性

編寫乙個函式,用來輸出整數在記憶體中的二進位制形式

ascii單位元組表(雙位元組gbk\gb2312\gb18030\unicode)

char c =a;

char c = "a";

char c = 'abcd';

char c = '

男'; //

乙個漢字佔三個位元組

在-128~127範圍內,可以當做整數來用

printf("%d", 'a');

printf("%c", 68);

轉義字元

意義

ascii

碼值\n將當前位置移到下一行開頭(回車換行)

10\t

跳到下乙個

tab位置9\\

代表乙個反斜線字元

92\'

代表乙個單引號字元

39\"

代表乙個雙引號字元

34\0

空字元0

編寫乙個函式,將小寫字母轉為大寫

說出程式的輸出結果

intmain()

C 學習 第九節

構造器 1.構造器 constructor 是型別的成員之一 2.狹義的構造器是指 例項構造器 instance constructor 3.構造器的呼叫 student stu new student 就是例項構造器 強制要求引數的構造器 4.如何呼叫構造器 5.宣告構造器 6.構造器的記憶體原理...

第九節除錯

除錯 第一種方法簡單直接粗暴有效,就是用print 把可能有問題的變數列印出來看看 斷言凡是用print 來輔助檢視的地方,都可以用斷言 assert 來替代 assert的意思是,表示式n 0應該是true,否則,根據程式執行的邏輯,後面的 肯定會出錯。如果斷言失敗,assert語句本身就會丟擲a...

java筆記第九節

第九節 一 設計模式 相當於戰術 入格 看 可用性,美觀性 的由23種。二 架構模式 相當於戰略 目前只有兩種 1.b s 瀏覽器 伺服器,邏輯 堆放到伺服器上 方便公升級,修改,伺服器任務重 b s網頁上的內容是臨時從伺服器上下下來的 2.c s 客戶 伺服器,邏輯 堆放到客戶端上 不適合管理軟體...