二进制与加法

8 位二进制最大为什么是 255,不是 256

8 位二进制有 256 种不同状态,但第一种状态是 0,所以最后一种是 255。这里讲的是本项目使用的无符号非负整数模型。

每加一位,状态翻倍

一位只有 0 和 1 两种状态。每多一位,原来的每种状态后面都能接 0 或 1,状态数翻倍,所以 n 位有 2 的 n 次方种状态。

位数、状态数量与最大值
位数状态数量最大值
121
243
41615
8256255

从 0 开始数

因为全 0 也是一种状态,表示 0,所以 256 种状态对应 0 到 255,最大值是 2 的 n 次方减 1。这不是只数到一半,而是 0 占掉了一个位置。

255 怎么来,256 为什么要九位

11111111₂ 等于 128+64+32+16+8+4+2+1,正好是 255。

再加 1 就是 100000000₂,也就是 256,需要第九位。

位数 n状态数量 2ⁿ最大值 2ⁿ − 1
121
243
41615
8256255

255 + 255 = 510

11111111₂ + 11111111₂ = 111111110₂

上半部分列出 1、2、4、8 位对应的状态数 2、4、16、256 和最大值 1、3、15、255;下半部分展示 11111111₂+11111111₂=111111110₂,也就是 255+255=510,结果占九位。

两个 8 位数相加可以有九位

两个输入各在 0 到 255 之间,和最大是 510。Bit Kido 的 8 位计算器保留第九位,不会截断成 8 位。

本页只讨论无符号非负整数,不涉及有符号补码,也不代表所有 8 位数据的含义;真实硬件也可能有别的设计。

自我检查

  1. 4 位二进制有多少种状态?最大是多少?

    答案

    2×2×2×2=16 种状态,从 0 开始数,最大是 15,写作 1111₂。

  2. 表示 256 至少需要几位?

    答案

    九位。256 写作 100000000₂,8 位最多只到 255。

  3. 255+255 只保留 8 位行吗?

    答案

    在本项目的模型里不行。结果 510 写作 111111110₂,需要九位,计算器会保留最高进位。