📌  相关文章
📜  从1到N的所有偶数的按位OR(|)

📅  最后修改于: 2021-04-23 22:07:50             🧑  作者: Mango

给定数字N ,任务是找到从1到N的所有偶数的按位OR(|)。

例子:

天真的方法:将结果初始化为2。从4到n(对于所有偶数)迭代循环,并通过按位或(|)查找结果来更新结果。

下面是该方法的实现:

C++
// C++ implementation of the above approach
#include 
using namespace std;
  
// Function to return the bitwise OR
// of all the even numbers upto N
int bitwiseOrTillN(int n)
{
    // Initialize result as 2
    int result = 2;
  
    for (int i = 4; i <= n; i = i + 2) {
        result = result | i;
    }
    return result;
}
  
// Driver code
int main()
{
    int n = 10;
    cout << bitwiseOrTillN(n);
    return 0;
}


Java
// Java implementation of the above approach 
class GFG
{
      
    // Function to return the bitwise OR 
    // of all the even numbers upto N 
    static int bitwiseOrTillN(int n) 
    { 
        // Initialize result as 2 
        int result = 2; 
      
        for (int i = 4; i <= n; i = i + 2)
        { 
            result = result | i; 
        } 
        return result; 
    } 
      
    // Driver code 
    static public void main (String args[])
    { 
        int n = 10; 
        System.out.println(bitwiseOrTillN(n)); 
    } 
}
  
// This code is contributed by AnkitRai01


Python3
# Python 3 implementation of the above approach
  
# Function to return the bitwise OR
# of all the even numbers upto N
def bitwiseOrTillN ( n ):
      
    # Initialize result as 2
    result = 2;
  
    for i in range(4, n + 1, 2) :
        result = result | i
      
    return result
  
# Driver code
n = 10;
print(bitwiseOrTillN(n));
  
# This code is contributed by ANKITKUMAR34


C#
// C# implementation of the above approach 
using System;
  
class GFG
{
      
    // Function to return the bitwise OR 
    // of all the even numbers upto N 
    static int bitwiseOrTillN(int n) 
    { 
        // Initialize result as 2 
        int result = 2; 
      
        for (int i = 4; i <= n; i = i + 2)
        { 
            result = result | i; 
        } 
        return result; 
    } 
      
    // Driver code 
    static public void Main ()
    { 
        int n = 10; 
        Console.WriteLine(bitwiseOrTillN(n)); 
    } 
}
  
// This code is contributed by AnkitRai01


C++
// C++ implementation of the above approach
#include 
#include 
using namespace std;
  
// Function to return the bitwise OR
// of all even numbers upto N
int bitwiseOrTillN(int n)
{
    // For value less than 2
    if (n < 2)
        return 0;
  
    // Count total number of bits in bitwise or
    // all bits will be set except last bit
    int bitCount = log2(n) + 1;
  
    // Compute 2 to the power bitCount and subtract 2
    return pow(2, bitCount) - 2;
}
  
// Driver code
int main()
{
    int n = 10;
    cout << bitwiseOrTillN(n);
    return 0;
}


Java
// Java implementation of the above approach 
class GFG 
{
      
    // Function to return the bitwise OR 
    // of all even numbers upto N 
    static int bitwiseOrTillN(int n) 
    { 
        // For value less than 2 
        if (n < 2) 
            return 0; 
      
        // Count total number of bits in bitwise or 
        // all bits will be set except last bit 
        int bitCount = (int)(Math.log(n)/Math.log(2)) + 1; 
      
        // Compute 2 to the power bitCount and subtract 2 
        return (int)Math.pow(2, bitCount) - 2; 
    } 
      
    // Driver code 
    public static void main (String[] args)
    { 
        int n = 10; 
        System.out.println(bitwiseOrTillN(n)); 
    } 
}
  
// This code is contributed by AnkitRai01


Python3
# Python3 implementation of the above approach 
from math import log2
  
# Function to return the bitwise OR 
# of all even numbers upto N 
def bitwiseOrTillN(n) : 
  
    # For value less than 2 
    if (n < 2) :
        return 0; 
  
    # Count total number of bits in bitwise or 
    # all bits will be set except last bit 
    bitCount = int(log2(n)) + 1; 
  
    # Compute 2 to the power bitCount and subtract 2 
    return pow(2, bitCount) - 2; 
  
# Driver code 
if __name__ == "__main__" : 
  
    n = 10; 
    print(bitwiseOrTillN(n)); 
  
# This code is contributed by AnkitRai01


C#
// C# implementation of the above approach 
using System;
  
class GFG 
{
      
    // Function to return the bitwise OR 
    // of all even numbers upto N 
    static int bitwiseOrTillN(int n) 
    { 
        // For value less than 2 
        if (n < 2) 
            return 0; 
      
        // Count total number of bits in bitwise or 
        // all bits will be set except last bit 
        int bitCount = (int)(Math.Log(n)/Math.Log(2)) + 1; 
      
        // Compute 2 to the power bitCount and subtract 2 
        return (int)Math.Pow(2, bitCount) - 2; 
    } 
      
    // Driver code 
    public static void Main()
    { 
        int n = 10; 
        Console.WriteLine(bitwiseOrTillN(n)); 
    } 
}
  
// This code is contributed by AnkitRai01


输出:
14

高效方法:计算N中的位数。在按位或运算中,最右边的位将为0,其他所有位将为1。因此,返回pow(2,总位数)-2。它将按位或的十进制形式给出等效值。

下面是该方法的实现:

C++

// C++ implementation of the above approach
#include 
#include 
using namespace std;
  
// Function to return the bitwise OR
// of all even numbers upto N
int bitwiseOrTillN(int n)
{
    // For value less than 2
    if (n < 2)
        return 0;
  
    // Count total number of bits in bitwise or
    // all bits will be set except last bit
    int bitCount = log2(n) + 1;
  
    // Compute 2 to the power bitCount and subtract 2
    return pow(2, bitCount) - 2;
}
  
// Driver code
int main()
{
    int n = 10;
    cout << bitwiseOrTillN(n);
    return 0;
}

Java

// Java implementation of the above approach 
class GFG 
{
      
    // Function to return the bitwise OR 
    // of all even numbers upto N 
    static int bitwiseOrTillN(int n) 
    { 
        // For value less than 2 
        if (n < 2) 
            return 0; 
      
        // Count total number of bits in bitwise or 
        // all bits will be set except last bit 
        int bitCount = (int)(Math.log(n)/Math.log(2)) + 1; 
      
        // Compute 2 to the power bitCount and subtract 2 
        return (int)Math.pow(2, bitCount) - 2; 
    } 
      
    // Driver code 
    public static void main (String[] args)
    { 
        int n = 10; 
        System.out.println(bitwiseOrTillN(n)); 
    } 
}
  
// This code is contributed by AnkitRai01

Python3

# Python3 implementation of the above approach 
from math import log2
  
# Function to return the bitwise OR 
# of all even numbers upto N 
def bitwiseOrTillN(n) : 
  
    # For value less than 2 
    if (n < 2) :
        return 0; 
  
    # Count total number of bits in bitwise or 
    # all bits will be set except last bit 
    bitCount = int(log2(n)) + 1; 
  
    # Compute 2 to the power bitCount and subtract 2 
    return pow(2, bitCount) - 2; 
  
# Driver code 
if __name__ == "__main__" : 
  
    n = 10; 
    print(bitwiseOrTillN(n)); 
  
# This code is contributed by AnkitRai01

C#

// C# implementation of the above approach 
using System;
  
class GFG 
{
      
    // Function to return the bitwise OR 
    // of all even numbers upto N 
    static int bitwiseOrTillN(int n) 
    { 
        // For value less than 2 
        if (n < 2) 
            return 0; 
      
        // Count total number of bits in bitwise or 
        // all bits will be set except last bit 
        int bitCount = (int)(Math.Log(n)/Math.Log(2)) + 1; 
      
        // Compute 2 to the power bitCount and subtract 2 
        return (int)Math.Pow(2, bitCount) - 2; 
    } 
      
    // Driver code 
    public static void Main()
    { 
        int n = 10; 
        Console.WriteLine(bitwiseOrTillN(n)); 
    } 
}
  
// This code is contributed by AnkitRai01
输出:
14