C 语言中的内存分析
C 語(yǔ)言中的內(nèi)存分析
一、進(jìn)制
我們需要了解的4中進(jìn)制:二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制
#include <stdio.h>
int main()
{
???????? //默認(rèn)情況下是十進(jìn)制
???????? intnumber = 12;
???????? //二進(jìn)制
???????? intnumber2=0b1100;
???????? //八進(jìn)制
???????? intnumber3 = 014;
???????? //十六進(jìn)制
???????? intnumber = 0xc;
???????? return0;
}
Printf以不同進(jìn)制形式輸出的類型:
%d 通常以十進(jìn)制輸出一個(gè)整數(shù)
%o通常以八進(jìn)制輸出一個(gè)整數(shù)
%x通常以十六進(jìn)制輸出一個(gè)整數(shù)
%u 以不帶符號(hào)的十進(jìn)制輸出整數(shù)
%c 輸出一個(gè)字符
%s 輸出一個(gè)或者多個(gè)字符串
%f 以小數(shù)形式輸出單雙度數(shù)值,默認(rèn)情況下是6位
%e移標(biāo)準(zhǔn)指數(shù)形式輸出單雙精度數(shù),數(shù)字部分小水位數(shù)為6位
任何數(shù)據(jù)在內(nèi)存中都是以二進(jìn)制的形式存在的!
??????????????? 一個(gè)int類型數(shù)據(jù)占據(jù)4個(gè)字節(jié)、32bit
例如:
??????????????? Int number=12;
????????????? 在內(nèi)存中顯示為:
????????????? 0000 ?0000 ?0000 ?0000?0000 ?0000 ?0000?1100
N位二進(jìn)制的取值范圍:
2位二進(jìn)制位的取值范圍:0~3
3位二進(jìn)制位的取值范圍:0~7
N為二進(jìn)制位的取值范圍:2n-1
?
把一個(gè)整數(shù)以二進(jìn)制輸出的代碼測(cè)試:
Void putBinary(intn)
{
????????????? Int bits = sizeof(n)*8-1;
????????????? While(bite>=0){
????????????? Printf(“%d”,n>>bit&1);
????????????? If( bits%4==0)
????????????? Printf(“ ”);
}
Printf(“\n”);
}
二、數(shù)據(jù)類型的取值范圍:
Char-----1個(gè)字節(jié)---8bit---取值范圍:-27~27-1
Int-------4個(gè)字節(jié)---32bit---取值范圍:-231-231-1
Float----4個(gè)字節(jié)----32bit---取值范圍:3.4e-38~3.4e38||-3.4e38~-3.4e-38
Double---8個(gè)字節(jié)---64bit—取值范圍:1.7e-308~1.7e308||-1.7e308~1.7e-308三、類三、型說(shuō)明符:
Int --------4個(gè)字節(jié)-----------%d
short --------4個(gè)字節(jié)-----------%d
long --------8個(gè)字節(jié)-----------%ld
long long ----8個(gè)字節(jié)-------%lld
signed有符號(hào):正數(shù)、0、負(fù)數(shù)
unsigned無(wú)符號(hào):包含0、正數(shù)
signed與unsigned的區(qū)別:signed最高位要當(dāng)做符號(hào)位;unsigned最高位不要當(dāng)作符號(hào)位。
四、位運(yùn)算
1. &按位與
例如:
9&5;
?????? ?把數(shù)據(jù)轉(zhuǎn)化成二進(jìn)制進(jìn)行與運(yùn)算
2. |按位或
例如:
9|5;
?把數(shù)據(jù)轉(zhuǎn)化成二進(jìn)制進(jìn)行或運(yùn)算
3. ^按位異或:只要兩個(gè)進(jìn)制位不行同就為1相同就位0
例如:
9^5;
?????? 把數(shù)據(jù)轉(zhuǎn)化成二進(jìn)制進(jìn)行異或運(yùn)算
????????????? N^N 結(jié)果為0;
????????????? 任何數(shù)值跟0異或得到原來(lái)的數(shù)值?????????
4. ~按位去反
?????? 例如:
???????????????????? ~9;
?? 9的所有二進(jìn)制位都進(jìn)行取反;
5.<<左移
?????? 把某個(gè)整數(shù)的二進(jìn)制位全部往左移動(dòng)N位高位丟棄低位補(bǔ)0
6. >>右移
?????? 把某個(gè)整數(shù)的二進(jìn)制位全部往右移動(dòng)N位保持符號(hào)位不變
五、char
//單引號(hào)‘’只能括注單字節(jié)的字符
//Char c=’男’;這個(gè)是錯(cuò)誤的寫法
//char c = “A ”;這個(gè)也是錯(cuò)誤寫法
//Char c = A ; 這個(gè)也是錯(cuò)誤的寫法
Char可以當(dāng)作整數(shù)來(lái)用,它的取值范圍為:-128~127;
轉(zhuǎn)義字符:
\n??? ?????????????換行?? ??????????????ASCII的值為10
\t????????????跳到下一個(gè)tab位置?????? ?ASCII的值為9
\\?? ??????????代表一個(gè)反斜線字符 ??????ASCII的值為92
\’??? ????????????? 代表一個(gè)單引號(hào)字符????? ?????????? ASCII的值為39
?
?
將一個(gè)字母的大小寫進(jìn)行轉(zhuǎn)換
大寫upper
小寫lowwer
Char upper(char c)
{
?????? If(c>=’a’&&c<=’z’)
?????? ?????? return ?c-32;
?????? elseif
?????? ?????? return ?c;
}
轉(zhuǎn)載于:https://blog.51cto.com/jeason/1594078
總結(jié)
以上是生活随笔為你收集整理的C 语言中的内存分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VMWare虚拟机NAT上网方法 亲测可
- 下一篇: Linux SSH Publickey登