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