指標大小由什麼決定

2021-07-15 17:35:28 字數 1491 閱讀 4547

字長:在同一時間中處理二進位制數的位數叫字長(cpu處理能力)。通常稱處理字長為8位資料的cpu叫8位cpu,32位cpu就是在同一時間內處理字長為32位的二進位制資料。二進位制的每乙個0或1是組成二進位制的最小單位,稱為乙個位元(bit)。

一般說來,計算機在同一時間內處理的一組二進位制數稱為乙個計算機的「字」,而這組二進位制數的位數就是「字長」。字長與計算機的功能和用途有很大的關係, 是計算機的乙個重要技術指標。字長直接反映了一台計算機的計算精度,為適應不同的要求及協調運算精度和硬體造價間的關係,大多數計算機均支援變字長運算, 即機內可實現半字長、全字長(或單字長)和雙倍字長運算。在其他指標相同時,字長越大計算機的處理資料的速度就越快。早期的微機字長一般是8位和16 位,386以及更高的處理器大多是32位。目前市面上的計算機的處理器大部分已達到64位。

字長由微處理器(cpu)對外資料通路的資料匯流排條數決定(不完全是,比如8088是16位處理器,只有8條資料匯流排,所以需要兩次取乙個資料)。

最小可定址單位:記憶體的最小可定址單位通常都是位元組。也就是說乙個指標位址值可對應記憶體中乙個位元組的空間。

定址空間:定址空間一般指的是cpu對於記憶體定址的能力。cpu最大能查詢多大範圍的位址叫做定址能力 ,cpu的定址能力以位元組為單位 (位元組是最小可定址單位),如32位定址的cpu可以定址2的32次方大小的位址也就是4g,這也是為什麼32位定址的cpu最大能搭配4g記憶體的原因 ,再多的話cpu就找不到了。

這裡cpu的定址位數是由位址匯流排的位數決定(cpu記憶體定址能力),32位cpu的定址位數不一定是32位,因為32位cpu中32的意義為字長。

有關定址範圍計算解釋,對於32位定址的cpu,其位址值為32位的二進位制數,所以可以表示的最大位址為2的32次方(即4g,最大記憶體空間為4gb,這裡g表示數量、gb表示容量)。同時我們不難看出,乙個指標的值就是乙個32位的二進位制數,32位對應4位元組(byte)。所以,指標的大小實際上是由cpu的定址位數決定,而不是字長。

再來分析一下如下的情況:

32位處理器上32位作業系統的32位編譯器,指標大小4位元組。

32位處理器上32位作業系統的16位編譯器,指標大小2位元組。 

32位處理器上16位作業系統的16位編譯器,指標大小2位元組。

16位處理器上16位作業系統的16位編譯器,指標大小2位元組。

這從結果看起來指標的大小和編譯器有關??

實際不是這樣的,有這樣的結果是因為以上幾種情況,處理器當前執行模式的定址位數是不一樣的,如下:

intel 32位處理器32位執行模式,邏輯定址位數32,指標也就是32位,即4個位元組

intel 32位處理器16位虛擬機器執行模式,邏輯定址位數16,指標也就是16位,即2個位元組

編譯器的作用是根據目標硬體(即cpu)的特性將源程式編譯為可在該硬體上執行的目標檔案。如果乙個編譯器支援某32位的cpu,那麼它就可以將源程式編譯為可以在該cpu上執行的目標檔案(也就是由目標處理器決定咯)。

該源程式中指標大小也會被編譯器根據該cpu的定址位數(如32位)編譯選擇為4位元組。

綜上可得:指標大小是由當前cpu執行模式的定址位數決定!

深度學習模型大小由網路決定

在訓練完乙個網路儲存模型以後,我常常會將最優的模型儲存,放在資料夾中以備用到!但會想模型的大小是由什麼決定的呢?其實我們的模型在我們確定網路結構以後就已經將模型的大小確定了。下面將具體介紹一下 對於上圖我們可以逐步計算 輸入 n0 c0 h0 w0 輸出 n1 c1 h1 w1 輸出的feature...

OA的使用年限由什麼決定

一套oa辦公軟體可以使用多久?一般的oa軟體廠商並沒有給出明確的說明。事實上,大多數使用者在oa辦公軟體上線後,由於無法根據使用者的需求作適用性的調整,重點使用的模組只能勉強使用 而在一年或者幾年以後,由於企業的規模和業務發生了變化,原有oa辦公軟體無法滿足新需求,不得不停用 改用 棄用的比比皆是,...

c 指標空間大小的決定因素

在學習apue的11.5 threads時,有乙個例項 其中有乙個列印位址fp的語句printf structure at 0x lx n unsigned long fp 為什麼要將指標變數fp強制轉換為unsigned long再列印呢,為了相容unix的各種分支平台 以前學習c語言的經驗是指標...