計算機大小端以及大小端查看

        數據在計算機中存儲的時候,分爲大端存儲和小端存儲,每個計算機的大小端存儲都不同,爲了瞭解自己的機器中的大小端類型,可以通過很多方法查看。這裏我們主要講解兩種查看大小端的方法。

那麼到底什麼是大小端呢?

       大端存儲是  數據的低位存儲在高地址處

       小端存儲是  數據的低位存儲在低地址處

 

       我個人在理解的時候,將大小端的存儲理解爲數據在存儲的時候,可以分爲從內存的 低到高 存儲和從 高到低 存儲,也可以理解爲從內存的頭部開始存儲和從尾巴開始存儲,這樣就可以理解了吧。從頭開始存儲是小端存儲,從尾巴開始存儲是大端存儲。

       我們查看大小端存儲的時候,可以通過編譯器的內存監視功能進行查看,這是最簡單的一種方法,也是我今天的第一種方法,

       這裏我們插入一段代碼,然後再打開編譯器的內存監視窗口,查看存儲狀況。

#include<stdio.h>

int main()
{
    int  a=1;
    return 0;
}

 

       從上面的兩張圖片中,可以看出我的這個機器是小端存儲,因爲a=1在內存中存儲時是將1放在低地址處,所以顯而易見是小端存儲。

       另一種查看大小端存儲的的方式是通過union數據類型和數組的存儲特點,進行大小端的查看。

#include<stdio.h>

int main()

{
    union stduent
    {
     short a1;
     char a2[2];
    }stu;
    
    stu.a1 = 1;    
    printf("%d\n", stu.a2[0]);
    
    system("pause");
    return 0;
}

       結果是1,是小端存儲,那麼我來解釋一下爲什麼會出現1,以及爲什麼小端存儲時,會出現1。

       數組在內存中的存儲特點是從低地址開始存儲,讀取的時候也是從低到高。而我們在將 a1 賦值爲1時,因爲short 類型在存儲的時候,是根據大小端進行存儲,數據可能是低位存儲在高地址處,或者低位存儲在地址值存。當我們將聯合體中一個成員修改後,也會影響到其他成員,根據這幾個特點,我們讀取數組的第一個元素,如果讀取的結果是1,那麼就是小端存儲,如果是0,那就是大端存儲。

       以上便是機器大小端檢測的兩種方法,其實還有很多方法查看,但較爲常用的也就這兩種了,如果不懂我在文章中的意思,可以私信給我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章