Deutsch · English · Français · Español · العربية · 中文
德语原文的自动翻译:Claude,Anthropic 公司的人工智能模型。
像素、比特与幂
图像是怎样到达屏幕上的?在最底层,事情很简单:每个像素要么亮,要么灭——有电或没电。因为一个存储单元正好能放下八个像素,一种图案就变成了一个数。
缘起
这个想法来自一台袖珍计算器:Sharp PC-1402,可以用 BASIC 编程。用命令 POKE 8192,240 把数字 240 写进存储单元 8192——显示屏上就会亮起一列像素。它左边的一列属于地址 8193,再左边一列属于 8194。谁知道哪个数会点亮哪些像素,就能用几行 BASIC 在屏幕上画出自己的图画。
显示屏
每一列是一个带地址的存储单元:最右边是 8192,它左边是 8193,依此类推。每一行有一个数值:最下面是 1,往上依次是 2、4、8……一直到最上面的 128。点击像素试试——每一列下方会显示这个存储单元里存的是哪个数。
一列的八个像素全亮:128+64+32+16+8+4+2+1 = 255
图像变成命令
计算机就是这样把你的图像写进内存的:
自己来 POKE
每行一条命令:POKE 地址, 数值
为什么偏偏是 1、2、4、8……?
像素只有两种状态:亮或灭。所以计算机以二为单位计数——用 2 的幂。在 27 中,2 是底数,7 是指数:它表示底数自乘多少次。
| 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 |
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
最后一位值得注意:20 = 1。这来自除法时指数相减的规则:22 : 22 = 22−2 = 20——而一个数除以它自己等于 1。继续下去,就得到 2−1 = ½、2−2 = ¼,依此类推。
从 0 到 255 的每一个数,都只能用唯一一种方式由这八个数值组成。例如 131 就是 128 + 2 + 1:最上面的一个像素和最下面的两个像素亮着。
练习
1286432168421