lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?
相信不少同學都在初學計算機之時,都被ASCII,Unicode和UFT-8等字符編碼格式 搞得焦頭爛額,這玩意兒到底是啥,區別是啥,為啥有這么多?
反正我剛學的時候純粹是囫圇吞棗,為了考試潦草背一背,背后的各種問題都沒有考慮,直到最近,有人問我為什么有了Unicode還要有UTF-8,我一時語塞,羞赧之余才有了今天的這篇算是入門的文章。
首先我們看一下ASCII編碼,我們先不解釋ASCII,先從計算機的存儲來看。
眾所周知,所有的信息對計算機來說都只是0和1,就像對于人類來說,所有的信息最終都會轉換成對于文字的描述,對于計算機而言,0和1就是他全部的語言,這就是所說的二進制。
每個二進制位有0和1兩種狀態。最近大熱的量子計算機,也無非使用用兩個量子態│0>和│1>代替經典比特狀態0和1,它的基本信息單位就不是比特了,而是量子比特。
對于一個比特而言,有0和1兩種狀態,而1個字節由8個比特組成,也就是有256種狀態,從00000000到11111111,每個狀態對應一個符號,就能表示256個符號,我們知道,計算機起源于美國,所以對于英語為母語的美國人來說,256個字符綽綽有余。因此,能表示256個字符的ASCII碼一開始僅僅使用了128個,即把一個字節第一位的比特都取為0。
但是,計算機的浪潮席卷全球,美國人用的那套就行不通了,一開始是歐洲的一些國家,128個字符壓根不夠,所以他們把第一位的比特也拿出來,但這也只能表示258個符號,更重要的是,每個國家都是用了258個符號的字符編碼沒事,但是代表的字母卻不一樣了,這就相當于兩個地區的方言。
比如我的老家問你喝了嗎?意思是喝沒喝水或者粥一類的東西,但是隔壁市問你喝了嗎就是問你吃飯沒有的意思,讓這兩個碰上面,肯定會造成溝通上的失誤,也就是我們所說的無法有效傳遞信息。
因此,為了解決這個問題。Unicode出現了,它把所有的符號都納入其中。
但是需要注意的是,Unicode只是一個符號集,還是要依賴于具體實現,也就是應該如何存儲,原因是如果規定字符都使用一兩個字節,那漢字就不能表示,但是都是用三四個字節,英文字母就會浪費很多內存空間,因此這就依賴于UTF家族成員,UTF家族有UTF-8,UFT-16以及UTF-32這幾個成員。
UTF-8有一個很大的好處,就是它可以根據不同的符號來變化長度,這樣就可以避免英文字母造成內存浪費的問題。
當然,UTF-8的編碼規則也很簡單:
1)對于單字節的符號,字節的第一位都為0,后面7位為這個符號的Unicode,這一點和ASCII編碼是一樣的。
2)對于n字節的符號,第一個字節的前n位都設為1,第n+1位設為0,后面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的Unicode碼。這也就意味著,如果第一位為1,那么有多少位1,就表示當前字符占用了多少個字節。
Little endian和Big endian:
Little endian:小字節序,也叫低字節序。意思是低位字節排放在內存的低地址端,高位字節排放在內存的高地址端。
Big endian:大字節序,也叫高字節序。意思是高位字節排放在內存的低地址端,低位字節排放在內存的高地址端。
那么問題來了,何為字節序呢?
通俗來說,字節序就是指數據在內存中的存放順序。
例如”子“,它的Unicode編碼是 5b50 ,需要用到兩個字節存儲,一個字節是5b,一個是50。存儲的時候,5b在前,50在后,就是Big endian方式,倒過來就是Little endian方式。
今天的分享就到這里了,如果大家有什么問題,可以發在留言區。
感謝大家的觀看。
總結
以上是生活随笔為你收集整理的lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机与编程导论,计算机科学与编程导论
- 下一篇: photoshop案例_玩手机不如学PS