說起大小端儲存,大家一定很疑惑,這是什麼東西,簡單點說就是電腦在讀機器語言的時候是先低位讀,還是高位。如果這還不是很明了,那麼我再舉乙個例子,對於32位作業系統,我們資料儲存是32位的,數字1,在機器中儲存的是0000....0001,前面31個0,後面乙個1,那麼你怎麼能知道機器是先從高位讀起,還是低位呢,有乙個簡單的方法,那就是你把資料的前8位截斷不就可以了嗎。乙個int是4個位元組,乙個char是乙個位元組,用char去強制型別轉換int型,就可以得到int資料型別的前八位了,是不是很神奇。
下面我寫了一段測試**:
#includeusing namespace std;
int main()
; int c=(int)&arr+1;
int a=*((long*)((int)&arr+1));
cout<<*((char*)((int)&arr+1)) <
上面先定義乙個陣列,5個大小,第二行的c是什麼意思呢取位址陣列名+1就是原陣列的位址向後偏移乙個位元組的意思,第三行的a是取四位,和int一樣,這裡就不管它了,下面輸出引用c位址,就是讀取c位址的內容,輸出的結果是2的25次方,這就說明我自己的電腦是小端儲存。這裡再解釋下小端儲存吧,
小端儲存(little endian)。位元組或
半位元組的最低位位元組(lowest significant bit,lsb)存放於記憶體最高位位元組位址上。即最低位址存放的最低位元組,
2在前面24個0,0010,1在電腦中是前面24個0,0001。用char去截斷,就得到陣列中1的那24個0和2中的第乙個位元組也就是0010,排列起來就是2的25次方。
怎麼編寫簡單程式判斷電腦是大端cpu還是小端cpu
電腦的cpu有兩種,大端和小端cpu。大端cpu 所謂的大端,是指資料的高位元組,儲存在記憶體的低位址中,而資料的低位元組,儲存在記憶體的高位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 小端 所謂的小端,是指資料的高位元組儲存在記憶體的高位址中,而...
編寫程式判斷你的電腦儲存方式是大端儲存還是小端
首先解釋一下為什麼會有大小端概念,對於超過乙個位元組資料,在電腦上儲存時需要跨越位元組來儲存,某些機器選擇在儲存器中按照從最低為有效位元組到最高有效位元組的順序儲存物件,而另一些機器則按照從最高為有效位元組到到最低為有效位元組的順序儲存,前一種儲存方式被稱為小端儲存,後一種方式被稱為大端儲存。簡單的...
(C語言)如何判斷所處環境使用的是大端還是小端
一 定義 參考百科定義 小端模式則和大端模式相反,資料高位存高位址,資料低位存低位址。在不考慮資料按位元組儲存的情況下類似於讀取字串資料,需要讀取後逆置方為原資料。二 大小端判斷方法 首先,需要設定乙個int型別的數字,最好小於256,且轉化為2進製後最後兩位不為0,在這裡選取1。接下來,將其強轉為...