那天对着屏幕敲代码,中途停下来翻早年存的笔记,脑子里突然卡着一个字节多少位二进制这个问题,明明之前看过好几回,临到要用的时候,脑子里面混着一堆零碎的数字,怎么都捋不顺。手边摊着好几个不同时期记的文档,有的随手写了4,有的标了8,还有一处不知道什么时候划了个16,笔迹潦草到自己都认不出当时是从哪抄来的。
本来想着随便搜一下就能敲定,结果点开几个页面,说法看着不完全一样,越看越乱,索性关掉网页,打算顺着自己之前记的东西慢慢理。就是这点执念,耗掉了小半个晚上,本来计划好要改完的脚本,进度直接停在原地,光标在编辑器里一闪一闪的,看着都闹心。
翻到大二的课堂草稿纸。
纸页边缘已经泛黄,上面歪歪扭扭写了一堆进制转换的演算,旁边还画了箭头,把位、字节、字串在一起。当时上课的时候好像听懂了,下了课转头就混,还自作主张把位和字节当成同一个东西,算存储大小的时候直接乘错,作业交上去之后被打回来,红笔圈出来一大片,那时候只觉得是自己算术粗心,没往概念本身上面多想。
之后很长一段时间里,碰到存储单位的时候都是凭感觉记,U盘、硬盘的容量标识扫一眼就过,很少停下来往底层去想。有时候看别人聊底层存储、寄存器相关的内容,听到有人说起不同硬件环境里面的情况,心里就犯嘀咕,是不是不是固定的数值,不然怎么会有人说不一样。那段时间还囤了好多计算机基础的电子书,存到网盘里面,文件名排了长长的一串,总觉得哪天有空慢慢啃就能全部搞懂,可大部分文件下载完之后就再也没有点开过,就是习惯性的存下来,好像存了就等于学会了。
这次卡壳之后,又把网盘里面那堆文档挨个点开翻,大部分都是大段的文字,读着费劲,翻了半天,找到一份很早下载的课件,里面一行文字落在角落,标注了常用场景下的取值。盯着那行字看了好一会儿,心里反倒更恍惚,原来之前记混,是把字长和字节的概念搅在一起了,处理器的字长会有不同,但是平时接触最多的场景里面,是另外一个数字。脑子里面两个概念缠成一团,一会跳到8,一会跳到别的数字,来回摇摆,一会觉得自己终于想通了,隔两分钟又开始怀疑,是不是课件写的不够严谨。
来回翻找的时候,还想起之前和朋友闲聊,他做嵌入式相关的工作,随口提过有些比较老旧的设备里面定义会不一样,当时没往心里去,这下这句话反复在脑子里打转,直接把思路搅得更散。没法直接判定哪一个才算是标准答案,也不想随便抓一个数字就写到笔记里,怕再过一阵子回头看,又被错误的记录给带偏。
折腾好久才反应过来,我一直纠结的点,其实是默认所有场景都共用一套定义,可实际不是这样。只是日常上网、写普通程序、看文件大小的时候,大家默认使用的那套,已经形成了习惯。也不敢拍胸脯说所有情况全都适用,毕竟见过不一样的说法,那些小众的硬件和旧标准,我没有实际上手碰过,只听别人说起,没有办法确认细节。
折腾到后半夜,没有再继续深挖那些冷门的定义。拿一支笔,在新的笔记空白处轻轻写下那个日常最常看到的数字,旁边用淡一点的字迹补了一句,仅代表我自己查到的这部分资料看到的情况,不同场景、不同人的体验会存在差异。写完之后合上本子,编辑器里还留着没写完的代码,已经不想接着往下改了。
关掉台灯的时候,屏幕的微光慢慢暗下去。只是可惜,当初上课的时候要是多花两分钟把这个区分开,后面就不会反反复复卡在同一个地方。