Featured image of post 计科基础 04 - 计算

计科基础 04 - 计算

一切计算都建立在比特之上。

封面故事:图灵参与破译的恩尼格玛机(Enigma)

逻辑运算

布尔类型

布尔值用于描述真值,只有 True/False 两种状态,1 位即可表示:1 表示真,0 表示假。这里讨论的是编程语境下的数据类型。

逻辑运算均作用于布尔值(单比特)。

非(NOT)

取反:真变假、假变真。

与(AND)

两者同时为真才为真。

或(OR)

两者同时为假才为假。

异或(XOR)

相同为假,不同为真。

移位运算

逻辑移位(Logical shift)

整体向左/向右移动比特串。

  • 非循环移位:溢出位丢弃,空位补 0。
  • 循环移位:把比特串视为环,移出的一端从另一端补回。

算术移位(Arithmetic shift)

针对带符号数的移位。

  • 左移:内容左移并补 0,若符号位发生改变说明溢出。
  • 右移:符号位不动,空位由符号位填充(正数补 0,负数补 1)。

算术运算

此处讨论加减。用补码表示时:

  • 加法:按位相加,最高位进位丢弃。
  • 减法:被减数加上「减数的补码」,转为加法处理。

若发生符号位错误翻转,说明溢出,结果不可信。

当用「符号 + 绝对值」表示时:

  1. 若是减法,先把第二个数取相反数转为加法;
  2. 比较符号:同号则绝对值直接相加,符号不变(注意溢出);
  3. 异号则将较小绝对值取补后与较大绝对值相加,结果符号取绝对值较大的那个;必要时对结果再取补。
comments powered by Disqus
Hosted by Cloudflare
使用 Hugo 构建
主题 StackJimmy 设计