二进制基本 算术运算 逻辑运算 位移运算 及其 汇编指令
About
二进制基本 算术运算 逻辑运算 位移运算 及其 汇编指令
算术运算汇编指令:加add 减sub 乘mul 除div 余mod 开方sqrt
逻辑运算汇编指令:与and 或or 非not 异或xor 求大max 求小min
位移运算汇编指令:左移SHL 右移SHR 算数左移SAL 算术右移SAR 循环右移(相当于乘以2的多次方,但计算更快速。)
(11得1 10得1 01得1 11得0 10得0 01得0 00得1 00得0 八种情况 八卦)
一:算术运算:
加法:11得0(异或门) 进位1(与门) 10得1(异或门) 01得1(异或门) 00得0(异或门)
减法:11得0 10得1 01得1 借位1 00得0
乘法:按被乘数 每位权重,被乘数×1=被乘数(1×1=1 0×1=0),被乘数×0=全是0(1×0=0 0×0=0),每个结果 按位权重 相加。
除法:
1. 从左往右 按照被除数逐位比较,能除则减,不能则借位。
2. 记录每步的商,最后得到商和余数。
开方:
一切 算术运算,都可 归结 简化 为 基本 二进制 逻辑运算。
最初只有 与非 或非 逻辑门 电路,取反(反相器),之后 才是 与门 或门 电路。
{
在数字逻辑电路的发展过程中,最初确实只有与非门(NAND gate)和或非门(NOR gate),以及取反器(反相器,也称为非门或NOT gate)。这三种基本逻辑门是构建更复杂逻辑电路的基础。
与非门(NAND gate)是一种通用的逻辑门,因为它可以用来实现任何其他类型的逻辑门。通过适当的组合,与非门可以实现与门(AND gate)、或门(OR gate)、以及非门(NOT gate)的功能。例如:
两个与非门串联可以实现一个与门。
两个与非门并联可以实现一个或门。
单个与非门的输出端连接到其输入端之一可以实现一个非门。
由于与非门的这种灵活性,它被认为是一种“完备”的逻辑门,意味着它可以单独用来构建任何布尔逻辑函数。
或非门(NOR gate)同样是一种强大的逻辑门,它也可以用来实现所有其他类型的逻辑门。通过适当的组合,或非门也可以实现与门、或门和非门的功能。例如:
两个或非门串联可以实现一个与门。
两个或非门并联可以实现一个或门。
单个或非门的输出端连接到其输入端之一可以实现一个非门。
因此,无论是使用与非门还是或非门,都可以构建出所有必要的逻辑功能。这两种门都是数字电路设计中不可或缺的元素。随着技术的发展,直接的与门和或门也被广泛使用,但它们的基本构造仍然依赖于与非门和或非门的组合。
}
异或 最初 就是 异或门。取反 叫 同或门 电路。相同得1 不同得0。
二:逻辑运算:
与、或、非、与非、或非、异或、同或。
中文和英文简写:
与:and
或:or
非:not
与非:nand(not and)
或非:nor(not or)
异或:xor(x or)
同或:xnor(x not or)
有一个对应法则口诀:
与:and ->有0出0,全1出1。 1,1->1 1,0->0 0,1->0 0,0->0
或:or->有1出1,全0出0。1,1->1 1,0->1 0,1->1 0,0->0
非:not ->有1出0,有0出1。:1->0 0->1
与非:nand->先按与的操作,然后结果取反。1,1->0 1,0->1 0,1->1 0,0->1
或非:nor ->先按或的操作,然后结果取反。1,1->0 1,0->0 0,1->0 0,0->1
异或:xor->相异为1,相同为0。1,1->0 1,0->1 0,1->1 0,0->0
同或:xnor->相同为1,相异为0。1,1->1 1,0->0 0,1->0 0,0->1
11得1(与运算 或运算 同或运算)
10得0(与运算 或非运算 同或运算)
01得0(与运算 或非运算 同或运算)
10得1(或运算 与非运算 异或运算)
01得1(或运算 与非运算 异或运算)
00得0(与运算 或运算 异或运算)
11得0(异或运算 与非运算 或非运算)
00得1(同或运算 与非运算 或非运算)
2个二进制逻辑数得1个二进制逻辑数:排列组合有:2×2×2=8种情况 8种结果 6种逻辑运算(非运算 不算)
X86架构与ARM架构 CPU处理器 的 算术指令 以及 GPU显卡 算术指令 都 包含了 加减乘除 开方 运算。
与运算 与 或运算 不可逆,无法反推。
非运算 和 异或运算 可逆,可以反推。
C语言 位运算 异或运算 的 符号 "^"。
A^B=C
C^B=A
C^A=B
A可以是原文。B可以是秘钥。C可以是密文。可以加解密。
可以无需第三方变量 交换a与b的值:
a=a^b;
b=a^b;
a=a^b;
三:在计算机中,负数是以补码的形式表示的:
补码是一种二进制数的表示方法,它使得计算机中的加法和减法运算可以统一处理,简化了计算机的硬件设计。
在补码系统中,
正数的补码与其原码相同,
负数的补码是其原码除符号位外所有位取反(即0变1,1变0)后加1得到的。
这种表示方式有助于简化计算过程,尤其是在进行加减运算时,
因为补码允许使用同一种电路来处理加法和减法,从而减少了计算机内部电路的复杂性。
以8位二进制数为例,
+8的二进制表示为00001000,
其补码也是00001000。
而对于-8,首先找到其绝对值8的原码00001000,
然后除符号位外其他位取反得到11110111,
最后加1得到补码11111000。
这样,无论是正数还是负数,都可以用同样的规则来计算其补码,
进而在计算机中使用统一的加法器来进行所有的算术运算。
在计算机系统中,无论是加法、减法还是乘法和除法,补码都是处理有符号数的主要方式。
补码的使用简化了计算机的硬件设计,特别是对于减法和乘法这样的运算。
在乘法运算中,补码允许直接对操作数进行乘法操作,而无需担心符号位的处理,
因为补码表示法已经将符号位融入到数值的表示之中。
补码乘法的运算过程涉及到将被乘数和乘数转换为补码形式,然后进行乘法运算,
最后根据结果的符号位确定最终的符号,
并将乘积转换为补码形式以得到最终结果。
这种处理方式不仅适用于整数乘法,也适用于浮点数乘法,尽管浮点数的表示和运算更为复杂。