跳转至

计算机基础

二进制编码,以 8 位数为例

  • 原码:符号位加上真值的绝对值
  • +1 ( 0000 0001), -1 ( 1000 0001)
  • 反码: 正数的反码是其本身,负数的反码是在其原码的基础上符号位不变,其余各个位取反。
  • +1 ( 0000 0001), -1 ( 1111 1110)
  • 存在 +0 和 -0
  • 补码:正数的补码等于源码/反码,负数的补码是反码加一;
  • +1 ( 0000 0001), -1 ( 1111 1111)

左移/右移:移动位数限制根据类型的位数决定(mod n),比如 32位 int,左移 1 等价于 左移 33

  • 算术左移、算术右移、逻辑左移、逻辑右移

浮点数的定义:IEEE 754,科学计数法,\(1.xyz * (2 ^ n)\)隐含最高数位1

  • 单精度浮点数:符号位(1位),阶码(8位),尾数(23位)
  • 阶码:采用移码表示,可直接比较,不需考虑负号问题,偏移量为 127(2^7 - 1) ;
    • 移码的指数范围为[-126, 127](254个取值):阶码全0被认为机器0,阶码全一被认为无穷大
  • 尾数:以原码表示
尾数\阶码 全0 不全0
全0 +0, -0 \(+\infty\), \(-\infty\)
不全0 NAN \([-(2−2^{-23})×2^{127}, (2−2^{-23})×2^{127}]\)