内存太慢,寄存器会快
寄存器:mov寄存器,你要往哪个寄存器存值。
学习通过直接操作来查看是最有效的。
FFFF FFFF 代表32位个32个1,无符号是正数,有符号是负数。
正数计算机中正常存,负数就是存补码。
位运算,什么是位运算?
现在的计算机可以存储所有的数字了。运算,再复杂的计算都是+法。
请问:2*8 最高效的计算方式?
很多底层的调试器,需要通过位来判断CPU的状态。
与运算:(and &)都是助记符
像是一个电路图。在电路图上进行操作。
1,两个都为1,结果为1。
晶体管,通过电来控制。
1011 0001
1101 1000
——————–
1001 0000 与运算的结果 两个都为1,结果为1。
假设:物量实验室,有很多灯炮,都有电路来控制。通过电路控制。
或运算:(or ||)
或运算,就是是并行的电路图。
只要有一个1,结果就为1
串行改为并行。
1011 0001
1101 1000
——————–
1111 1001 或运算的结果 只要有一个1,结果就为1 。
异或运算(xor ^)
不一样就是1 例:01 就是1
1011 0001
1101 1000
——————–
0110 1001 异或运算的结果 相同的为0 不相同则为1。
非运算(单目运算符 not ~)所谓的取反
1101 1000
0010 0111 非运算的结果 0就是1 1就是0
什么时侯用到非运算,存负数的时侯,会用到。取反。
通过这些可以完成加减乘除,位运算来实现。
位运算(移动位) 向左移动*2 右移/2
分两种:
左移:(shl <<)
0000 0001 1 所有的二进制位全部左移若干位,高位就丢弃了,低位补0。
第0步0000 0001
第1步000 0001
第2步000 00010 补0
右移: (shr >>)
0000 0001 1 所有的二进制位全部右移若干位,低位就丢弃了,高位就需要补0,1(则有符号位来决定)。
第0步0000 0001
第1步 0000 000
第2步 0000 0000 补0
=====================================
0000 0001 1
0000 0010 2
0000 0110 4
0000 1000 8
二进制,位运算 === 加减乘除