回覆列表
  • 1 # 使用者4930919472376

    位元組是byte 包括8個二進位制位 字是word 長度與架構有關,如mips包括32個二進位制位 一個字就是4個位元組 它們的區別就是長度不一樣。 記憶體中是按位元組尋值。因此是每byte也就是每8位存一個數值。 當你想取一個word出來的時候,就是連續取了4個byte出來,然後拼成一個word xx位機的xx位是指字長。這個字和word不一樣,是指這種CPU一次能運算的資料長度,32位機就是一次運算32個二進位制位,64位機就是一次運算64個二進位制位 總之,兩者僅僅長度不同。---------------------------------------------------------------------------------------------------- 字的定義是這樣,對於某種特定的計算機設計而言,字是用於表示其自然的資料單位的術語。所以架構不同時,字的長度也不一樣。上面所說一個word是32位,是在mips指令集中。在x86指令集中就是一個word就定義為16位,儘管它執行起來更像是32位的。維基百科中這樣說

    字長對計算機構架的儲存器模式有很大的影響。特別是:通常選擇字作為儲存器的編址方案,所謂儲存器編址方案就是地址碼能夠指定的最小儲存單位。In this approach, 編號相鄰的記憶體字組,其位址編號相差一。在計算機中這樣很自然,因為它通常總是要處理以字為單位的資料(或者是以字的倍數)。並且具有讓指令可以使用最小的長度來指定一個地址的優點,這樣,就可以減少指令長度或者可以定義更多的指令條數 舉例說明,x86比較複雜,它的指令是變長的。拿mips舉例來說,它的指令是32位定長,一次從記憶體中取32位也就是4個byte,然後再進行運算。定義的變數也是以32位為單位,例如定義char c;雖然char型別只佔一個byte,但是記憶體中是申請了4個byte的空間來儲存它。所以,在mips中,它的字就是“自然”的定義為32位。 通常說CPU的字長,與這裡的字稍有不同,指計算機一次最大能操作的資料長度。---------------------------------------update-----------------------------------------mips中變數都取32位是指,變數在記憶體中申請的空間是按照32位對齊的。舉例說明,假設一行表示32位,那麼申請char a, int i.,就佔用兩行,如下ai申請char a,b,c,d int i,仍然佔用兩行 如下a b c di因為mips從記憶體中取資料一次是按照32位取出,也就是隻能一行一行取,不能跨行。所以申請的變數都以32位對齊。假如不這樣做,沒有進行記憶體對齊,而是直接對空位進行填充。第一個例子,char a佔用8位,int i佔用32位,那麼int i的高24位就在第一行,而低8位在第二行,cpu就不能正確的進行讀取以及運算。因此,記憶體對齊是有必要的。C語言中,int 與 long int 在32位機上都是32位,在64位機上,int 是32位, long int 是64位。C中的char是一個位元組,因為C出現的相對比較早,8位足夠表示ASCII碼了。但是後來加入了各種其他語言的字元,就出現了能表示更多字元的 unicode 編碼。C沿用了以前的辦法,char仍然是一個位元組,一些擴充過的字符集如unicode 就用兩個char來表示了。有些語言,比如java的char是16位也就是兩個位元組。

  • 中秋節和大豐收的關聯?
  • 想買一臺20萬左右的緊湊SUV,舒適性好,動力偏大帶四驅,德系與日系車如何選?