數據存儲的問題

數據存儲在哪裏?緩存

  答:數據存儲在存儲器中編碼

那麼什麼是存儲器?3d

  好嘛,我也不解釋不清楚。可是我知道用什麼能存儲數據blog

  1. 紙張(想象一下打孔紙帶,之前的指令和數據都碼在上面)
  2. 內存(如今存儲介質爲晶體管(早期還有其餘手段《水銀延遲線存儲器》))
  3. 寄存器(存儲介質爲晶體管)
  4. 硬盤
  5. 緩存部件

存儲器容量的問題?(這裏指內存、寄存器)內存

  能存儲下多少的數據,這個就須要量化了。例如你從A跑到B點。你告訴別人我跑了那麼長,那麼長?懵逼
  存儲器是由晶體管組成,一個晶體管表示2種狀態,那麼一組晶體管就能夠表示多種狀態。it

  那麼能存儲2種狀態的一個晶體管,稱爲bit。相似的還有B、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。class

  而後由大佬來制定存儲單位的換算關係。很差理解?(10毫米=1釐米,100釐米=1米,這些都是人規定的,當你們都承認的時候這就是標準啦)亂碼

  1 Byte(B) = 8 bit(早期1Byte=18bit)
  1 Kilo Byte(KB) = 1024B
  .......還有不少,自行搜索。

  存儲器的存儲單位劃分比較大方,最小單位是字節Byte,而後對每個存儲單元編號搜索

每個小格子就是一個bitfloat

根據大佬定義,1 Byte(B) = 8 bit,但願你們能理解

還有三點須要考慮

  1. 編碼
  2. 數據在存儲器的排列狀況
  3. 數據範圍

存儲:數字10

  1. 對數字10進行XXX編碼
  2. 不存在排列的問題,1字節可表達256種狀態,10<256
  3. 存儲器最小存儲單位是字節,因此數字10佔用1個字節

存儲:字符a

  1. 計算機能存儲的是二種狀態(電信號、0或一、高低電平),無論怎麼理解,都是二種狀態,採用多個晶體管組合用來表達更大範圍狀態。因此這裏的問題是,字符a不能直接存儲,須要對字符進行編碼。存儲編碼後的值。(例如你看見紅燈知道要停下來了,看見綠燈能夠行走了,這裏就是對走和停的編碼。)
  2. 同上
  3. 同上

存儲:300.232323

  1. 編碼
  2. 300確定不用用1個字節存儲,緣由就是1字節只能表達256,300>256。那麼須要2個存儲單元(2個字節)那麼存在排列的問題了。究竟是 30 00 仍是 00 30?  這個就是大小端的問題了。 若是是小端模式,數字的地位在 低地址,高位數據在高地址,假設存儲地址從低高到排列那麼應該是 00 30。大端相反

     

   3.佔用2個字節

 

總結:

編碼(編碼的方式不是惟一的,各類各樣。)

  整數:補碼

  小數:float聽從的是IEEE R32.24 ,而double 聽從的是R64.53。

  字符:

    字母:ASCII

    漢字:GBK、GBK2312
  術語:

      亂碼:利用你對整數使用了補碼進行編碼,在解碼的時候採用了ASCII,這個現象就是亂碼啦

         你使用GBK對漢字編碼,而缺採用UNICODE解碼排列  大小端

相關文章
相關標籤/搜索