数据的表示与运算
进制与编码(详细讲解)
1. 进制基础
- 二进制:逢二进一,只有0和1。例如:1011₂ = 1×2³+0×2²+1×2¹+1×2⁰=11₁₀
- 八进制:逢八进一,0~7。例如:157₈ = 1×8²+5×8¹+7×8⁰=111₁₀
- 十六进制:0~9,A~F,逢十六进一。例如:2F₁₆ = 2×16¹+15×16⁰=47₁₀
2. 进制转换
- 十进制转二进制:除2取余法,从下往上写余数。例如:156₁₀ → 10011100₂
- 二进制转十进制:权展开法。例如:1101₂ = 1×2³+1×2²+0×2¹+1×2⁰=13₁₀
- 二进制转八/十六进制:每3/4位一组,直接换算。
3. 常见编码
- ASCII:7位或8位编码,A=65,a=97
- Unicode/UTF-8:支持全球字符,1~4字节变长编码
- BCD码:每4位二进制表示1位十进制数字,常用于金融
易错点
- 进制转换顺序:除基取余法要从下往上写
- 二进制分组时要从低位开始分组
定点数与浮点数(详细讲解)
1. 定点数
- 原码:最高位为符号位,0正1负,其余为数值本身。例如:+7原码=00000111,-7原码=10000111
- 反码:正数反码=原码,负数反码=符号位不变,其余位取反。例如:-7反码=11111000
- 补码:正数补码=原码,负数补码=反码+1。例如:-7补码=11111001
- 补码的优点:统一了加减法电路,只有一个0,简化硬件设计
2. 浮点数
- IEEE 754单精度浮点数:32位=1符号+8阶码+23尾数
- 表示方法:(-1)^S × 1.M × 2^(E-127)
- 例:-5.75的IEEE 754表示
-5.75₁₀ = -101.11₂ = -1.0111 × 2²
符号位S=1,阶码E=127+2=129=10000001₂,尾数M=011100000...
最终:1 10000001 01110000000000000000000
易错点
- 补码溢出:注意符号位变化
- 浮点数精度丢失:二进制无法精确表示所有小数
常用运算(详细讲解)
1. 补码加减法
- 补码加减法:直接按位相加,溢出时丢弃最高位
- 溢出判断:同号相加得异号即溢出
- 例:8位补码,-35+20
-35补码=11011101,20补码=00010100,相加=11110001,符号位1,结果为-15
2. 逻辑运算
- 与(AND):两个都为1才为1
- 或(OR):有一个为1就为1
- 非(NOT):0变1,1变0
- 异或(XOR):相同为0,不同为1
3. 乘除法与移位
- 移位乘法:左移一位等于乘2,右移一位等于除2
- 补码乘法:同样用补码规则
易错点
- 补码加减法时,注意溢出判断和符号位变化
- 逻辑运算与移位运算的优先级