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