CPU如何进行数学运算

  1. 位运算
    • 与或非
      • 按位与
      • 按位或
      • 按位取反
    • 位移
      • 左移
      • 右移
      • 算术位移与逻辑位移
  2. 四则运算

位运算

与或非

按位与

符号: & 示例:

1(10进制)  =  0000 0001 (2进制)
9(10进制)  =  0000 1001 (2进制)
1  &  9    =  0000 0001 (2进制)
           =  1 (10进制)

计算遵守:都为真则真, 除此之外为假

按位或

符号:| 示例:

5(10进制)  =  0000 0101 (2进制)
8(10进制)  =  0000 1000 (2进制)
5  |  8    =  0000 1101 (2进制)
           =  13 (10进制)

计算遵守:只有要一个是真结果就是真, 都为假才假

按位取反

符号:~ 示例:

5(10进制)  =  0000 0101 (2进制)
    ~5     =  1111 1010 (2进制)
           =  -6 (10进制)

计算遵守:真变假,假变真

PS:二进制负数的计算是

            0  =  0000 0000
 0 - 1  =  -1  =  1111 1111
-1 - 1  =  -2  =  1111 1110
-2 - 1  =  -3  =  1111 1101
-3 - 1  =  -4  =  1111 1100
-4 - 1  =  -5  =  1111 1011
-5 - 1  =  -6  =  1111 1010

位移

左移

符号:<< 运算:直接将数据向左移动一位,并补零

1 (10进制) = 0000 0001 (2进制)
1  <<  1   = 0000 0010 (2进制)
           = 2

1  <<  3   = 0000 1000 (2进制)
           = 8

右移

符号:>> 运算:直接将数据向左右动一位,并补零

9 (10进制) = 0000 1001 (2进制)
9  >>  1   = 0000 0100 (2进制)
           = 4

9  <<  3   = 0000 0001 (2进制)
           = 1

算术位移与逻辑位移

位移包括算术位移和逻辑位移两种情况。逻辑位移是指位移过后直接补零。

算术位移是指在保持符号位不变的情况下进行的位移。

例如:

-6 (10进制) = 1111 1010 (2进制)
-6  >>  1   = 1111 1101 (2进制)
            = -3

-6  >>  2   = 1111 1110 (2进制)
            = -1

对于 -6 而言最高位 1 是负数标识的符号位,在进行位移的时候该符号位会保持不变,这种位移叫做算术位移。而不论如何位移过后都补零的情况测试逻辑位移

四则运算

results matching ""

    No results matching ""