big endian和little endian:
big endian和little endian是cpu處理多位元組數的不同方式。例如「漢」字的unicode編碼是6c49。那麼寫到檔案裡時,究竟是將6c寫在前面,還是將49寫在前面?如果將6c寫在前面,就是big endian。如果將49寫在前面,就是little endian。
「endian」這個詞出自《格列佛遊記》。小人國的內戰就源於吃雞蛋時是究竟從大頭(big-endian)敲開還是從小頭(little-endian)敲開,由此曾發生過六次叛亂,乙個皇帝送了命,另乙個丟了王位。
我們一般將endian翻譯成「位元組序」,將big endian和little endian稱作「大尾」和「小尾」。
utf-8以位元組為編碼單元,沒有位元組序的問題。utf-16以兩個位元組為編碼單元,在解釋乙個utf-16文字前,首先要弄清楚每個編碼單元的位元組序。例如「奎」的unicode編碼是594e,「乙」的unicode編碼是4e59。如果我們收到utf-16位元組流「594e」,那麼這是「奎」還是「乙」?
在ucs編碼中有乙個叫做"zero width no-break space"的字元,它的編碼是feff。而fffe在ucs中是不存在的字元,所以不應該出現在實際傳輸中。ucs規範建議我們在傳輸位元組流前,先傳輸字元"zero width no-break space"。 這樣如果接收者收到feff,就表明這個位元組流是big-endian的;如果收到fffe,就表明這個位元組流是little-endian的。因此字元"zero width no-break space"又被稱作bom。
utf-8不需要bom來表明位元組順序,但可以用bom來表明編碼方式。字元"zero width no-break space"的utf-8編碼是ef bb bf(讀者可以用我們前面介紹的編碼方法驗證一下)。所以如果接收者收到以ef bb bf開頭的位元組流,就知道這是utf-8編碼了。
windows就是使用bom來標記文字檔案的編碼方式的。
ultraedit2023年前版本對big-endian支援有問題。
計算機中階符 階碼 數符 尾數的意思
乙個浮點數a由兩個數m和e來表示 a m b e。在任意乙個這樣的系統中,我們選擇乙個基數b 記數系統的基 和精度p 即使用多少位來儲存 m 即尾數 是形如 d.ddd ddd的p位數 每一位是乙個介於0到b 1之間的整數,包括0和b 1 如果m的第一位是非0整數,m稱作規格化的。有一些描述使用乙個...
小想法 生物計算機
突然想到人體的微妙,就是通過電流控制人體的各個反應。再加之以前老師提到的生物儲存,後面還看到說宇宙是某種高階機械人創造的。他規定我們這個世界的規則,我們只是遵循其中的規則而生的實驗品 突然會想到乙個問題,我們人類,自然界的生物。是不是就是他們所程式設計出來的產物。將特定的資訊編入蛋白質中然後通過繁衍...
計算機的小知識
三 結語 本文意在將it領域經常遇到而又有可能使我們模稜兩可的計算機常識性知識進行總結明確,幫助同行業的朋友們節省查閱時間,同時方便我個人備查。馮諾依曼體系結構是計算機的基礎,馮諾依曼體系結構下的計算機由儲存器 cpu 控制器 運算器 輸入裝置 輸出裝置構成。計算機中最小的儲存單元為位元 bit 而...