回車與換行的故事

以前在學(xué)匯編的時候,一直不知道老師在換行時,總會打一個換行符回車符,原來他們還有這么一個故事....

在很久以前,有一種叫做電傳打字機(Teletype Model 33 ASR) 的機器,那時候還沒有計算機這種玩意。在這種打字機上,有一個叫Carriage的部件,它是打字頭,相當(dāng)于打字機的光標(biāo)。每輸入一個字符,光標(biāo)就會前進(jìn)一格。當(dāng)輸入的字符滿一行后,光標(biāo)重新從下一行的最左邊開始打印。

這個時候會觸發(fā)兩個動作,一個是把光標(biāo)在垂直方向上向下移,一個是在水平方向上把光標(biāo)移動到最左邊。然后這種打字機每秒可以打10個字符,相當(dāng)于0.1秒打一個字符;而要完成這兩個動作需要花費0.2秒的時間,如果在這0.2秒中,有新的字符傳過來的話,那么這些字符將會丟失。

為了解決這個字符丟失的問題,研制人員就在每行的后面添加了兩個表示一行結(jié)束的字符:一個叫回車(carriage return),相當(dāng)于告訴打字機,把光標(biāo)在水平方向上移到最左邊;一個叫換行(line feed),相當(dāng)于告訴打字機,在垂直方向上把光標(biāo)移動到下一行。

這就是回車換行的由來。

后來,計算機出現(xiàn)了,這兩個概念也被拿了過來。但是那時候儲存設(shè)備非常昂貴,一些人認(rèn)為用兩個字符用來表示一行的結(jié)尾非常浪費,于是產(chǎn)生了分支,不同的廠商有不同的處理方法。

在這些操作系統(tǒng)中,Unix操作系統(tǒng)每行結(jié)尾只有換行,即"\n";Windows則是回車+換行,即“\r\n”;而Mac系統(tǒng)里則使用回車來代表結(jié)尾,即“\r”。

正是這個原因,才會導(dǎo)致我們有時用Windows系統(tǒng)來打開Unix/Mac系統(tǒng)的文件時,會出現(xiàn)所有文字變成一行的情況,而用Unix和Mac系統(tǒng)打開Windows系統(tǒng)的文件時,在每一行的結(jié)尾會多出一個 ^M 的字符。

關(guān)注公我的眾號:苦逼的碼農(nóng),獲取更多原創(chuàng)文章,后臺回復(fù)「禮包」送你一份特別的資源大禮包。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容