如何用位运算实现加减乘除

作者: snoweek | 来源:发表于2016-07-24 09:13 被阅读490次

    由于位运算比普通的加减乘除效率要高很多,所以在在实际编程中应尽可能使用位运算代替加减乘除。以下总结我在编程中常用的位运算。
    位运算表示乘法

    int a=8;
    a=a*2;
    a=a<<1;
    

    位运算表示除法

    int a=8;
    a=a/2;
    a=a>>1;
    

    位运算求奇偶性

    int a = 8;
    if (a % 2 == 0) {
        System.out.println("a是偶数");
    } else {
        System.out.println("a是奇数");
    }
    if ((a & 0x1) == 0) {
        System.out.println("a是偶数");
    } else {
        System.out.println("a是奇数");
    }
    

    位运算表示加法
    加法分为三步:

    1. 各位相加不进位 0 + 0 =0, 0+1 = 1,1+0=1,1+1=1,可以注意到这和异或运算结果相同
    2. 进位 1+1 =10进位,其余均不进位 ,进行左移动一位
    3. 重复前两个步骤,直到不产生进位为止。
    public static int Add(int num1, int num2) {
            int sum = 0;
            int carry = 0;
            while (num2 != 0) {
                sum = num1 ^ num2;
                carry = (num1 & num2) << 1;
                num1 = sum;
                num2 = carry;
            }
            return sum;
        }
    

    相关文章

      网友评论

        本文标题:如何用位运算实现加减乘除

        本文链接:https://www.haomeiwen.com/subject/dpwwjttx.html