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

作者: 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;
    }

相关文章

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

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

  • 算术运算和逻辑运算

    算术运算和逻辑运算 算术运算:加减乘除等基本运算 逻辑运算: 逻辑与 &, 如 A &B ,AB同时位真才为真。 ...

  • 位运算实现加减乘除

    一. 位运算的基本操作 A = 0011 1100B = 0000 1101 二. 加法 不考虑进位的按位求和, ...

  • JS中的位移运算

    快速理解位运算: 位运算比其他运算(加减乘除)更加底层,所以运算的更快,但是不是所有场景都可以用 位运算只针对整数...

  • 不用加减乘除运算符,求整数的7倍

    问题 不用加减乘除运算符,求整数的7倍 思路 当需要进行避免使用加减乘除的数学运算的时候,通常的方法有:位运算、E...

  • 位运算知识点复习、位运算实现加减乘除

    一、位运算符 按位与按位或按位异或按位取反按位左移按位右移a&ba|b^~aa<<1a>>1 二、位运算实践 1....

  • Python基础31-面向对象(小结案例)

    1 目标:通过计算器, 实现一些基本的操作, 如加减乘除运算, 以及打印结果等。 需求:(2 + 6 - 4) *...

  • 利用位运算来实现加减乘除

    1 加法我们现在关注二进制加法。发现一个特点。位的异或运算跟求'和'的结果一致: 异或 1^1=0 1^0=1 0...

  • 位运算加减乘除

    加法: carry = 进位 = AND xor = remains. 减法: The~operator flip...

  • 网页制作加法运算

    加法运算 这是我写的一个简单的加法运算法则,可以根据这个加法变换出多种,比如加减乘除都能去实现,可以说非常实用。如...

网友评论

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

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