簡單理解資訊在電腦中的表示

來源:互聯網
上載者:User

標籤:android   os   java   io   檔案   for   ar   資料   問題   

資訊是一個很寬泛的概念,說大了是與物質和能量鼎立的自然界三要素,這裡僅僅涉及到電腦中的資訊;

眾所周知,對電腦自身而言,所有資訊都是0/1二進位形式;

作為JavaEE/Android程式員,在開發過程中有時會遇到字元編碼,進位轉換這樣的基礎問題,雖然依靠經驗或者網路搜尋能很快實現功能,但每次都感覺對基本概念理解得不是很透徹,不如把現有的理解記錄下來,以備後用;

 

資訊在電腦中大致分為控制資訊和資料資訊;

控制資訊是電腦系統內部運轉用到的控制命令,例如讀寫命令,中斷訊號,片選訊號,複位訊號,就緒訊號等;當然都是二進位表示;

資料資訊指電腦可運算、可儲存、可傳輸、可採集、可輸出的各種資料;可分為數值資料,文本資料(字元,字串),多媒體資料(映像,音頻,視頻),位元據(可執行檔等);

 

電腦資訊的表示跟資訊的處理,傳輸,儲存,輸入/輸出一樣,是電腦系統最基本的功能之一;

電腦中的資訊表示可分為硬體系統可直接表示的資訊,和軟體系統可表示的資訊;後者如資料結構,資料庫表結構,XML/Json結構等等;

 

這裡,只討論電腦硬體系統對資訊的表示;

 

位,Bit,Binary digit的縮寫,是電腦中資訊表示的最小單位;跟電子電腦的“電子”有關,高低電平;

位元組,Byte, 8Bit, 可表示一個英文字元ASCII碼;跟電腦的發明國美利堅所用語言有關;

定點數,小數點位置固定不變;定點小數的小數點緊跟符號位之後;定點整數小數點在有效數值部分之後;

浮點數,小數點位置可以浮動;尾數,階碼,底數;尾數位元越多,所表示數值的密度越大,精度越高;階碼位元越多,所表示數值的範圍越大;

無符號數,全部二進位位均表示數值位;

有符號數,最高位被用來表示符號位;

機器數,一個數的二進位表示形式,最高位表示符號;

真值,機器數代表的真正數值;

原碼,符號位加上真值的絕對值;

反碼,正數的反碼與其原碼相同,負數的反碼是對其原碼逐位取反,符號位除外;

補碼,正數的補碼與其原碼相同,負數的補碼是在其反碼的末位加1;

在電腦中,數值一律採用補碼錶示;

補碼設計目的:

-使符號位能與有效值部分一起參加運算(自動溢出),簡化運算規則;

-使減法運算轉換為加法運算(同餘,模數,A-B 等於 A+B的補碼),簡化電腦中運算器的線路設計;

溢出,計算得出的數值超出了整數類型可以表示的數值範圍;

進位,進位主要包含基數和位權兩個因素;電腦常用的是二進位,八進位,十六進位;

N進位轉換成十進位,按權求和;

十進位轉換N進位,整數部分-除N取餘,小數部分-乘N取整;

一般可藉助二進位或十進位做中間轉換;

具體的轉換原理和演算法及程式實現在另外的文章再做介紹;

 (todo 補碼運算和浮點數運算)

 

字元編碼和字元集:

ASCII-American Standard Code for Information Interchange. 1bit+7bit; 英文字元編碼,老美出品,第一個bit為0,可表示128個字元;擴充集第一個bit為1,加起來

表示256個字元;

這對於非英語國家特別是亞洲國家的文字表示是遠遠不夠啊,於是各國開始擴充自己的字元集;各自擴充的結果就是互不相容;同一個二進位串在不同語言國家表示不同字元;

於是出現了偉大的萬國碼Unicode,可統一表示世界上所有國家的文字; Unicode僅僅給出了字元的編碼值,這些值在電腦中具體怎麼表示是由UTF來實現的;

具體有:UTF-8/UTF-16/UTF-32;

UTF-8用可變長度(1-6)位元組表示Unicode值,UTF-16用2位元組或4位元組表示Unicode值;UTF-32用4位元組表示Unicode值;

既然是可變多位元組表示,為了避免歧義,就要指明位元組的長度和順序(BOM);

UTF-8 encoding scheme: 

for 1 byte unicode character: the first bit is 0, the rest 7 bits are the unicode value of the character; 

for n byte unicode character: the first n bits of the first byte are 1, and the n+1 bit is 0, the first 2 bits of the rest bytes are 10, and all the rest bits are the

unicode value of the character; 

Unicode符號範圍           | UTF-8編碼方式

(十六進位)                   |(二進位)

------------------------------------------------------------------

0000 0000-0000 007F | 0xxxxxxx

0000 0080-0000 07FF | 110xxxxx 10xxxxxx

0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx

0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

其它字元編碼還有:

UCS-Universal Character Set: UCS-2(16bit), UCS-4(32bit), 

EBCDIC-Extended Binary Coded Decimal Interchange Code:8bit. 

ISO 8859: 8bit, 

GB2312:16bit, 94區*94位, 簡體中文. 

BIG5: 16bit, 繁體中文. 

 

 

關於big-endian(FEFF)和little-endian(FFFE):

big-endian: the higher(most significant) byte stored in the lower memory address. 

little-endian: the lower(least signaficant) byte stored in the lower memory address. 

BOM-Byte Order Mark,ZERO WIDTH NO-BREAK APACE,FFFE,

 

 

(todo 多媒體資訊表示,圖形,映像,動畫,音頻,視頻,虛擬現實)

簡單理解資訊在電腦中的表示

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.