1首先了解 低字節(jié)位 和高字節(jié)位 看圖
十年的石龍網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整石龍建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)建站從事“石龍網(wǎng)站設(shè)計”,“石龍網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
2字節(jié)在內(nèi)存的排列方式
//int num = 010; //0開頭代表 8禁止 //("%d",num); //所以打印的是8 int num = 0x12345678; //將占 2 32位 printf("%p", &num); /* 要特別 注意 低位 在低字節(jié) 高位 高字節(jié) 0x0063FAC0 78 x 0x0063FAC1 56 V 0x0063FAC2 34 4 0x0063FAC3 12 . */ 看圖2
3 printf 不會進行自動轉(zhuǎn)換
void main()
{
printf("%d", 10.3);
printf("\n%f", 10);
getchar();
}
請看圖3
4 一定要注意數(shù)據(jù)會溢出數(shù)據(jù)會溢出
請看圖4
unsigned short num = 65535;
printf("我有現(xiàn)金:%d元",num);
unsigned short num = 65535+1;
printf("我有現(xiàn)金:%d元",num);
上面這樣數(shù)據(jù)就會溢出
5 原理
頭文件#includeprintf("%d", INT_MAX); printf("\n%d", INT_MIN); printf("\n%u", UINT_MAX); //有負號的情況下 0代表正式 1代表負數(shù) //1111 1111 1111 1111 1111 1111 1111 1111 //0111 1111 1111 1111 1111 1111 1111 1111
6源碼反碼補碼
//1的源碼和-1的源碼
//0000 0000 0000 0000 0000 0000 0000 0001
//1000 0000 0000 0000 0000 0000 0000 0001
//-1符號為是1
源碼反碼補碼過程
//源碼1000 0000 0000 0000 0000 0000 0000 0001
//-1反碼1 符號位不變 所有0變1 1變0
//111 1111 1111 1111 1111 1111 1111 1110
//-1補碼 符號位不變 所有0變1 1變0 在補1(在反碼基礎(chǔ)是+1)
//111 1111 1111 1111 1111 1111 1111 1111
unsigned int num = -1;
printf("%d %u", num, num);
雖然補碼后二進制相同 但是他們有負號的符號位不算 所以數(shù)據(jù)不相同
7為什么要用補碼 非常重要?。?!
0000 0001 1 (1代表十進制)
1000 0010 2 (1000 0010 是2的源碼)
如果我們用2的補碼
1000 0010 源碼
1111 1101 反碼(所有位取反 負號不變)
1111 1110 補碼(反碼基礎(chǔ) +1)
這時候在相加
0000 0001 1
1111 1110 2的補碼
1111 1111 是不是就是-1
-1 源碼
1000 0001
1111 1110 反碼
1111 1111 補碼
用補碼的原因就是因為可以大大節(jié)約計算機的資源
8 數(shù)據(jù)的取值范圍