乙個記憶體位址可儲存 8 bit = 1 byte(位元組)
32位作業系統可定址空間為 2^32 (byte) = 2^10 * 2^10 * 2^10 *4 = 4 gb
c宣告位元組數
位元組數有符號
32位64位
char11
short22
int4
4long48
char*48
float44
double88
32bit寬的16進製制 0x12345678 在記憶體中的存放方式:
記憶體位址
0x4000
0x4001
0x4002
0x4003
存放內容
0x12
0x34
0x56
0x78
記憶體位址
0x4000
0x4001
0x4002
0x4003
存放內容
0x78
0x56
0x34
0x12
任何時刻共用體中只存放了乙個被選中的成員
所有成員都從低位址開始存放
結構體和共用體的區別在於:
結構體的各個成員會占用不同的記憶體,互相之間沒有影響;而共用體的所有成員占用同一段記憶體,修改乙個成員會影響其餘所有成員。
結構體占用的記憶體大於等於所有成員占用的記憶體的總和(成員之間可能會存在縫隙),共用體占用的記憶體等於最長的成員占用的記憶體。共用體使用了記憶體覆蓋技術,同一時刻只能儲存乙個成員的值,如果對新的成員賦值,就會把原來成員的值覆蓋掉。
#define big_endian 0
#define little_endian 1
inttestbyteorder()
#include
using
namespace std;
union test
;int
maint()
else
if(test.b[0]
==0x02
&& test.b[1]
==0x01
)else
return0;
}
記憶體位址計算問題
1.記憶體位址從a4000h到cbfffh共有幾個儲存單元是怎麼計算的?cbfff a4000 1 28000 十六進製制 cbfff a4000 1 cc000 a4000 cc a4 16 3 cc a4 2 12 2 16 8 2 12 40 2 12 160 2 10 b 160 kb 2....
記憶體位址計算問題
1.記憶體位址從a4000h到cbfffh共有幾個儲存單元是怎麼計算的?cbfff a4000 1 28000 十六進製制 cbfff a4000 1 cc000 a4000 cc a4 16 3 cc a4 2 12 2 16 8 2 12 40 2 12 160 2 10 b 160 kb 2....
大端位址與小端位址的區分
大端和小端是乙個比較麻煩的東西,因為這兩個東西比較容易弄混,乙個是資料尾端存在高位址處,乙個是資料尾端存在低位址處。看了一篇的文章 發現用裘宗燕翻譯的 程式設計實踐 裡的語句來解釋比較有助於記憶和區分大端和小端,那本書裡是 把大端叫做高尾端,把小端叫做低尾端,這表示大端是把字串的尾端資料存在記憶體高...