1. 主页
  2. 文档
  3. 汇编语言
  4. 位运算理解

位运算理解

内存太慢,寄存器会快

 

寄存器: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

 

二进制,位运算 === 加减乘除

这篇文章对您有用吗?

我们要如何帮助您?