原码的表示分为 “符号位” 和 “数值位” 两部分,具体规则如下:
符号位:二进制数的最高位(最左边的位),用于表示正负:
符号位为 0 时,表示正数;
符号位为 1 时,表示负数。
数值位:除符号位外的其余位,直接表示数字的绝对值(即该数字的二进制绝对值形式)。
位数固定:在计算机中,整数的表示位数是固定的(如 8 位、16 位、32 位),若数值位不足,需在符号位与数值位之间用 0 补齐(正数和负数的数值位均补 0)。
为解决原码不能直接参加运算这一问题,计算机中实际使用补码(而非原码)进行带符号整数的运算 —— 补码能将减法转化为加法,且零只有唯一表示,避免了原码的缺陷。
在计算机中,反码(One's Complement)是一种带符号整数的表示方法,是原码向补码过渡的中间形式,主要用于解决原码运算的部分问题。它的核心思想是对原码的数值位进行 “按位取反” 操作。
原码与补码、反码的关系
原码是补码和反码的基础,三者的转换规则(以 8 位为例)如下:
正数:原码 = 补码 = 反码(符号位 0,数值位相同);
例:+5 的原码 = 00000101,补码 = 00000101,反码 = 00000101。
负数:
反码 = 原码的 “符号位不变,数值位按位取反”;
例:-5 的原码 = 10000101 → 反码 = 11111010(符号位 1 不变,数值位 0000101 取反为 1111010)。
补码 = 反码 + 1(若有进位则舍弃超出位数的部分);
例:-5 的反码 = 11111010 → 补码 = 11111010 + 1 = 11111011。
综上,原码是计算机中带符号整数的 “基础表示法”,虽因运算缺陷未被实际用于计算,但理解原码是掌握补码(计算机核心编码)的关键前提。