zoukankan      html  css  js  c++  java
  • 回车与换行的故事

    以前在学汇编的时候,一直不知道老师在换行时,总会打一个换行符回车符,原来他们还有这么一个故事....

    在很久以前,有一种叫做电传打字机(Teletype Model 33 ASR) 的机器,那时候还没有计算机这种玩意。在这种打字机上,有一个叫Carriage的部件,它是打字头,相当于打字机的光标。每输入一个字符,光标就会前进一格。当输入的字符满一行后,光标重新从下一行的最左边开始打印。

    这个时候会触发两个动作,一个是把光标在垂直方向上向下移,一个是在水平方向上把光标移动到最左边。然后这种打字机每秒可以打10个字符,相当于0.1秒打一个字符;而要完成这两个动作需要花费0.2秒的时间,如果在这0.2秒中,有新的字符传过来的话,那么这些字符将会丢失。

    为了解决这个字符丢失的问题,研制人员就在每行的后面添加了两个表示一行结束的字符:一个叫回车(carriage return),相当于告诉打字机,把光标在水平方向上移到最左边;一个叫换行(line feed),相当于告诉打字机,在垂直方向上把光标移动到下一行。

    这就是回车换行的由来。

    后来,计算机出现了,这两个概念也被拿了过来。但是那时候储存设备非常昂贵,一些人认为用两个字符用来表示一行的结尾非常浪费,于是产生了分支,不同的厂商有不同的处理方法。

    在这些操作系统中,Unix操作系统每行结尾只有换行,即" ";Windows则是回车+换行,即“ ”;而Mac系统里则使用回车来代表结尾,即“ ”。

    正是这个原因,才会导致我们有时用Windows系统来打开Unix/Mac系统的文件时,会出现所有文字变成一行的情况,而用Unix和Mac系统打开Windows系统的文件时,在每一行的结尾会多出一个 ^M 的字符。

    关注公我的众号:苦逼的码农,获取更多原创文章,后台回复礼包送你一份特别的资源大礼包。

  • 相关阅读:
    Java基础知识三点
    《计算机网络》读书笔记
    Shell编程初步
    《现代操作系统》读书笔记
    《数据库系统概论》读书笔记
    《数据结构》读书笔记
    Linux使用笔记
    【Thinking in Java】读书笔记
    算法题摘录六
    算法题摘录五
  • 原文地址:https://www.cnblogs.com/kubidemanong/p/9531939.html
Copyright © 2011-2022 走看看