Number System
Binary Number System
这一节的内容可以用这个例子来总结
To express
| 1 | 0 | 0 | 1 | . | 1 | 1 | 0 | 1 |
|---|---|---|---|---|---|---|---|---|
Sum them up to get the decimal number of
Octal and Hexadecimal Numbers
换算为十进制跟上面二进制换算一样,在此不述
- Least significant figure (LSD)
- Most significant figure (MSD)
Conversion between Binary, Octal and Hexadecimal Numbers
规则为
- 3 个二进制为 1 个八进制
- 4 个二进制为 1 个十六进制


Bytes and Nibbles
| Unit | No. of Bits | Represent values per unit | Range |
|---|---|---|---|
| Byte | 8 | ||
| Nibble | 4 |
| Number Digit | No. of bit | No. of byte | No. of nibble |
|---|---|---|---|
| Binary Digit | 1 | ||
| Octal Digit | 3 | ||
| Hex | 4 | 1 |
Signed Numbers
Sign / Magnitude Numbers
- Positive number: sign bit = 0
- Negative number: sign bit = 1
Range:
Example - +6 = 0110
- -6 = 1110
Two's Complement Numbers
- Positive number: sign bit = 0
- Negative number: sign bit = 1
Range:
Step:
- Convert to one's complement:
0和1互换 - Add 1
Example: Calculate two's complement of
- Binary number of 3:
- One's complement:
- Add 1:
Hence, the two's complement ofis 1101
只有当 sign bit 一致的情况下才有可能会出现 overflow error
- Subtraction: 转换为加法,如
- Multiplication: 按一般乘法做
- Division: 不断做 subtraction
Divide
by
- Convert
to 2's complement (negation 变成负数) - 不断做 subtraction
- Quotient =
Fixed-Point Number
定点数 fixed-point number 就是固定小数点的位置
Unsigned Fixed Point Formats
is integer bit is fraction bit
Convert 6.75 into binary
Represent 6.75 in different format:
Signed Fixed Point Format
is integer bit, including the sign bit is fraction bit
Convert the unsigned fixed point format to 2's complement
Write -6.75 in Q4.4
- 1's complement:
- Add 1 LSB:
Saturating Arithmetic
定点溢出 Fixed point overflow 通常很糟糕,会产生难看的伪影(artifacts):
- 视频里明亮区域中间出现暗像素
- 音频里出现咔哒声
Saturating Arithmetic: Use largest value when overflow
In U4.4,
Overflow error occurs
Hence, use the largest value of U4.4 under saturating arithmetic, i.e.
Floating Point Numbers
类似科学计数法 (General form:
= 尾数 mantissa = Base = Exponent
We use IEEE 754 floating-point standard- 1 bit for sign
- 8 bit for biased exponent
- 23 bit for fraction
Biased Exponent
Range of exponent (without biased):
只能表示正数和 0,表示不了负数
但是科学计数法里的指数是有正有负,因此把 exponent 全部加 127,变成 positive number 储存
Represent 228 using 32 bit floating point representation
- Convert to binary number:
- Normalize (把小数点移到第二位):
- 移动几位,指数就是几。这里移了 7 位 → 指数
- 计算 sign bit, exponent and mantissa
- Sign bit: 0
- Exponent:
- Mantissa / Fraction: 由于第一位(即小数点前的那位)永远为 1,所以可以省略来减省空间
- 保存为
- 由于 fraction bit 是 23-bit 长,因此要填充
,因此为
- 保存为
因此,
Write -58.25 in floating point
- Convert to binary number:
- Normalize:
- Fill the fields
- Sign bit: 1
- Exponent bit:
- Fraction bit:
Special Cases
| Number | Sign | Exponent | Fraction |
|---|---|---|---|
| 0 | X | 00000000 | 全 0 |
| 0 | 11111111 | 全 0 | |
| 1 | 11111111 | 全 0 | |
| NaN(Not a Number) | X | 11111111 | 非 0 |
Non-positional / Non-weighted Number System
并非所有二进制串都是用来做算术的"数",有些只是编码(code)
- 位置/加权计数系统(positional/weighted number system): 符号的值由它的位置决定
- e.g. 十进制、二进制、八进制、十六进制
- 非位置/非加权系统(non-positional/non-weighted): 符号的值与位置无关
- e.g. 格雷码(Gray Code)、循环码(cyclic code)
Binary Coded Decimal (BCD)
把每一个十进制数字单独用一个 4 位二进制编码表示
例如 8421 code
.png)
BCD Addition
Add two BCD numbers (跟二进制加法一致)
- If a 4-bit sum
9, it is valid BCD number - Else, add 6
to 4-bit sum

4 bit 二进制的 range 是
加 6 正好把这段落差补回来,让进位时序重新和十进制对齐
Gray Code
Only a single bit change from one code word to the next in sequence
相邻的 Gray Code 只有 1 bit 的变化

Denote each digit of Gray Code by
- Convert from binary number to Gray Code
- Copy MSB (最左边的数字, i.e.
) - XOR:
- Copy MSB (最左边的数字, i.e.
Convert the binary number
- Carry out XOR operation
Hence, the Gray Code is
- Convert from Gray Code to binary number
- Copy MSB (i.e.
) - XOR:
- Copy MSB (i.e.
Convert Gray Code
Hence, the binary number is
Error Codes
数据在传输或存储中可能出错(由 0 变 1 或反之)
Parity Bit for Error Detection
- Even parity code:
1的数量是 even - Odd parity code:
1的数量是 odd
只有当错的 bit 数量为 odd 才可以检测到
Cyclic Redundancy Check (CRC)
CRC 是能检测数据块中多个错误的检错方法:
- 发送端: 对数据块计算出一个校验和(checksum),附在数据后面一起发送;
- 接收端: 用同样的方法重新计算校验和并比对
结果为 0 说明未检出差错,非 0 说明出错。
Given
- Data:
- Generator code:
Denote Data byand Generator code by
Send
- 在 data 后添加
个 (n 是 Generator code 的长度)
- Modulo-2 Division:
- Append the remainder / checksum to
The transmitted CRC is
Receive
Divide received data by generator code
- Correct: Remainder = 0
- Error: Remainder is non-zero
