Рубрики

Умножение переменной на постоянную без использования оператора умножения

Поскольку мы знаем, что каждое число может быть представлено как сумма (или разность) степеней 2, поэтому мы можем представить константу в виде суммы степеней 2.

Для этой цели мы можем использовать оператор побитового сдвига влево. Когда число сдвигается влево по битам, оно умножается на 2 для каждого сдвига битов.

Например, предположим, что мы хотим умножить переменную, скажем «а», на 10, то что мы можем сделать, это

a = a << 3 + a << 1;

Выражение a << 3 умножает a на 8, а выражение a << 1 умножает его на 2.

Таким образом, в основном то, что мы имеем здесь, это a = a * 8 + a * 2 = a * 10

Аналогично для умножения на 7, что мы можем сделать, это

a = a<<3 - a;
or
a = a<<2 + a<<1 + a;

Оба эти утверждения умножают на 7.

C ++

#include<iostream>

using namespace std;

  
// Возвращает n * 7

int multiplyBySeven(int n)

{

    // ИЛИ (n << 2) + (n << 1) + n

    return (n << 3) - n;

}

  
// возвращает n * 12

int multiplyByTwelve(int n)

{

    return (n << 3) + (n << 2);

}

  

int main()

{

    cout << multiplyBySeven(5) << endl;

    cout << multiplyByTwelve(5) << endl;

    return 0;

}

Джава

class GFG {

      

    // Возвращает n * 7

    static int multiplyBySeven(int n)

    {

          

        // ИЛИ (n << 2) + (n << 1) + n

        return (n << 3) - n;

    }

  

    // возвращает n * 12

    static int multiplyByTwelve(int n)

    {

        return (n << 3) + (n << 2);

    }

      

    // Код драйвера

    public static void main(String[] args)

    {

        System.out.println(multiplyBySeven(5));

        System.out.println(multiplyByTwelve(5));

    }

}

  
// Этот код предоставлен Anant Agarwal.

python3

# Python3 программа для умножения
# переменная с константой

  
# Возвращает n * 7

def multiplyBySeven(n):

      

    # ИЛИ (n << 2) + (n << 1) + n

    return (n << 3) - n

  
# Возвращает n * 12

def multiplyByTwelve(n):

    return (n << 3) + (n << 2)

      
# Код драйвера

print(multiplyBySeven(5))

print(multiplyByTwelve(5))

  
# Этот код предоставлен Anant Agarwal.

C #

// C # программа для умножения
// переменная с константой

using System;

  

class GFG

{

    // Возвращает n * 7

    static int multiplyBySeven(int n)

    {

        // ИЛИ (n << 2) + (n << 1) + n

        return (n << 3) - n;

    }

       

    // возвращает n * 12

    static int multiplyByTwelve(int n)

    {

        return (n << 3) + (n << 2);

    }

      

    // Код драйвера

    public static void Main()

    {

        Console.WriteLine(multiplyBySeven(5));

        Console.WriteLine(multiplyByTwelve(5));

    }

}

  
// Этот код предоставлен Anant Agarwal.

PHP

<?php
// PHP программа оператора умножения
// Возвращает n * 7

  

function multiplyBySeven($n)

{

    return ($n << 3) - $n;

}

  
// возвращает n * 12

function multiplyByTwelve($n)

{

    return ($n << 3) + ($n << 2);

}

  
// Код драйвера

echo multiplyBySeven(5), "\n";

echo multiplyByTwelve(5), "\n";

  
// Этот код предоставлен Ajit
?>


Выход :

35
60

Нам просто нужно найти комбинацию степеней 2. Кроме того, это очень удобно, когда у нас очень большой набор данных, и каждый из них требует умножения с той же константой, поскольку побитовые операторы быстрее по сравнению с математическими операторами.

Эта статья предоставлена kp93 . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Умножение переменной на постоянную без использования оператора умножения

0.00 (0%) 0 votes