數一下方塊的個數編程
漢字:十一 十進制:11 二進制:1011 八進制:13函數
1> 判斷下列數字是否合理spa
00011 0x0011 0x7H4 10.98 0986 .089 -1093d
+178 0b325 0b0010 0xFFdc 96f 96.0f 96.0Fcode
-.003 15.4e6 10e8.7 7.6e-6blog
2> 分別寫出它們的十進制、八進制、十六進制內存
0b0011 1101 0b0111 1011開發
3> 寫出它們的二進制編譯器
67 056 0x004fit
研究變量在內存中的具體存儲狀況
爲了更好地理解變量在內存中的存儲細節,先來認識一下內存中的"字節"和"地址"。
int b = 10;
int a = 134;
// 輸出整數的二進制形式
void putBinary(int n)
{
int bits = sizeof(n) * 8;
while (bits-->0) {
printf("%d", n>>bits&1);
if (bits%4==0) printf(" ");
}
printf("\n");
}
寫出下列變量在內存中的存儲狀況
int a = 134;
int b = 0;
int c = -10;
可是我實際操做過程當中的字節數和上面的圖不一致
電腦配置
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。
只要對應的二個二進位有一個爲1時,結果位就爲1,不然爲0。
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 |
int main()
{
int i = 67 + '4';
char c = 'c' - 10;
printf("%d - %c\n", i, i);
printf("%d - %c\n", c, c);
return 0;
}
內容來源:傳智播客