一、原码、反码、补码
一个数在计算机中的表示形式是二进制,这个数其实就叫机器数。机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0, 负数为1。并且,将带符号位的机器数对应的真正数值称为机器数的真值。
比如,十进制中的数 +10 ,计算机字长为8位,转换成二进制就是00001010。如果是 -10 ,就是 10001010。
一个存储的二进制码分原码、反码、补码,下面我们就来介绍一下什么是原码、反码、补码。
注意:计算机都是用补码存储,在计算的时候,如果是减法,可以把减法看成加法。
1.1 原码
原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。
用32位二进制来表示:
+100 = 00000000 00000000 00000000 01100100
-100 = 10000000 00000000 00000000 01100100
1.2 反码
反码的表示方法是: 正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
用32位二进制来表示:
+100 = 00000000 00000000 00000000 01100100
-100 = 11111111 11111111 11111111 10011011
1.3 补码
补码的表示方法是:正数的补码就是其本身,负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1 (即在反码的基础上+1)。
用32位二进制来表示:
+100 = 00000000 00000000 00000000 01100100
-100 = 11111111 11111111 11111111 10011100
1.4 总结
综上所述:
- 正数的原码、反码、补码相同。
- 负数的反码为其原码符号位不变,其余各位取反;补码为其原码符号位不变,其余各位取反后再在最后一位上加1,既在反码的基础上+1。
二、逻辑运算“与或非”
在逻辑代数中,有与、或、非三种基本逻辑运算。
2.1 运算规则
A | B | 与(A and B) | 或(A or B) | 异或(A Xor B) |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
1 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
- “与”运算:全部为真值(1)才为真。
- “或”运算:只要存在一个真值(1)就为真(或 全部为假才为假)。
- “异或”运算:相同为假,不同为真。
- “非”运算:一变零,零变一。
总结:
真真为真(与),假假为假(或),同假异真(异或)。
2.2 基本公式
逻辑变量之间的运算称为逻辑运算。
逻辑运算主要包括三种基本运算:逻辑加法(又称“或”运算)、逻辑乘法(又称“与”运算)和逻辑否定(又称“非”运算)。
# * 表示 与 运算,+ 表示 或 运算,' 表示 非 运算
1' = 0
0' = 1
(A')' = A
(A + B)' = A' * B'
(A * B)' = A' + B'
A * 0 = 0
A * 1 = 1
A * A = A
A * (A') = 0
A * B = B * A
A * (B * C) = (A * B) * C
A * (B + C) = A * B + A * C
A + (B * C) = (A + B) * (A + C)
A + 1 = 1
A + 0 = A
A + A = A
A + A' = 1
A + B = B + A