Рубрики

Установить все четные биты числа

По заданному числу задача состоит в том, чтобы установить все четные биты числа. Позиции битов отсчитываются от младшего разряда (младший бит) до старшего разряда (старший бит). Позиция LSB считается 1.

Примеры :

Input : 20 
Output : 30
Binary representation of 20 is
10100. After setting
even bits, we get 11110

Input : 10
Output : 10

Способ 1: —
1. Сначала сгенерируйте число, которое содержит четные биты позиции.
2. Возьмите ИЛИ с оригинальным номером. Обратите внимание, что 1 | 1 = 1 и 1 | 0 = 1

Давайте разберемся в этом подходе с кодом ниже.

C ++

// Простая программа CPP, чтобы установить все
// биты числа
#include <iostream>

using namespace std;

  
// Устанавливает четные биты n и возвращает
// измененный номер.

int evenbitsetnumber(int n)

{

    // Генерируем 101010 ... 10 число и

    // сохранить в рез.

    int count = 0, res = 0;

    for (int temp = n; temp > 0; temp >>= 1) {

  

        // если бит четный, то генерируем

        // номер и или с рез

        if (count % 2 == 1)

            res |= (1 << count);

  

        count++;

    }

  

    // возвращаем ИЛИ номер

    return (n | res);

}

  

int main()

{

    int n = 10;

    cout << evenbitsetnumber(n);

    return 0;

}

Джава

// Простая Java-программа, чтобы установить все
// биты числа

class GFG 

{

    // Устанавливает четные биты n и возвращает

    // измененный номер.

    static int evenbitsetnumber(int n)

    {

        // Генерируем 101010 ... 10 число и

        // сохранить в рез.

        int count = 0, res = 0;

        for (int temp = n; temp > 0; temp >>= 1) {

             

            // если бит четный, то генерируем

            // номер и или с рез

            if (count % 2 == 1)

            res |= (1 << count);

  

        count++;

        }

          

        // возвращаем ИЛИ номер

        return (n | res);

          

    }

      

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

    public static void main(String[] args)

    {

        int n = 4;

         System.out.println(evenbitsetnumber(n));

    }

}

  
// Этот код добавлен
// Прерной Сайни.

python3

# Простая программа Python, чтобы установить все четные
# биты числа

  
# Устанавливает четные биты n и возвращает
# измененный номер.

def evenbitsetnumber(n):

  

    # Сгенерировать 101010 ... 10 число и

    # магазин в рез.

    count = 0

    res = 0

    temp = n

    while(temp > 0):

  

        # если бит четный, то генерировать

        # номер и или с res

        if (count % 2 == 1):

            res |= (1 << count)

  

        count+=1

        temp >>= 1

          

    # вернуть ИЛИ номер

    return (n | res)

  

n = 10

print(evenbitsetnumber(n))

  
# Этот код добавлен
# Смита Динеш Семвал

C #

// Простая программа на C # для установки
// все четные биты числа

using System;

  

class GFG 

{

    // Устанавливает четные биты n и

    // возвращает измененный номер.

    static int evenbitsetnumber(int n) {

      

        // Генерируем 101010 ... 10 число

        // и сохранить в рез.

        int count = 0, res = 0;

        for (int temp = n; temp > 0; temp >>= 1) {

              

            // если бит четный, то генерируем

            // номер и или с рез

            if (count % 2 == 1)

            res |= (1 << count);

  

        count++;

        }

          

        // возвращаем ИЛИ номер

        return (n | res);

          

    }

      

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

    public static void Main()

    {

        int n = 4;

        Console.WriteLine(evenbitsetnumber(n));

    }

}

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

PHP

<?php
// Простая программа php для установки
// все четные биты числа

  
// Устанавливает четные биты n и
// возвращает измененный номер.

function evenbitsetnumber($n)

{

      

    // Генерируем 101010 ... 10 число

    // и сохранить в рез.

    $count = 0;

    $res = 0;

    for ($temp = $n; $temp > 0; $temp >>= 1) 

    {

  

        // если бит четный, то генерируем

        // номер и или с рез

        if ($count % 2 == 1)

            $res |= (1 << $count);

  

        $count++;

    }

  

    // возвращаем ИЛИ номер

    return ($n | $res);

}

  

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

    $n = 10;

    echo evenbitsetnumber($n);

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

Выход:

10

Метод 2 (AO (1) решение для 32-битных чисел)

C ++

// Эффективная программа CPP для установки всех четных
// биты числа
#include <iostream>

using namespace std;

  
// возвращаем номер набора msb

int getmsb(int n)

{

  

    // установить все биты

    n |= n >> 1;

    n |= n >> 2;

    n |= n >> 4;

    n |= n >> 8;

    n |= n >> 16;

  

    // вернуть msb

    // увеличиваем n на 1

    // и сдвиг на 1

    return (n + 1) >> 1;

}

  
// вернуть четное число

int getevenbits(int n)

{

  

    // получить MSB здесь

    n = getmsb(n);

  

    // генерируем четные биты вроде 101010 ..

    n |= n >> 2;

    n |= n >> 4;

    n |= n >> 8;

    n |= n >> 16;

  

    // если бит нечетный, то сдвиг на 1

    if (n & 1)

        n = n >> 1;

  

    // вернуть четное количество битов

    return n;

}

  
// установить все четные биты здесь

int setallevenbits(int n)

{

    // взять или с четным количеством битов

    return n | getevenbits(n);

}

  

int main()

{

    int n = 10;

    cout << setallevenbits(n);

    return 0;

}

Джава

// Эффективная Java-программа для
// установить все четные биты числа

import java.io.*;

  

class GFG 

{

      
// возвращаем номер набора msb

static int getmsb(int n)

{

  

    // установить все биты

    n |= n >> 1;

    n |= n >> 2;

    n |= n >> 4;

    n |= n >> 8;

    n |= n >> 16;

  

    // вернуть msb

    // увеличиваем n на 1

    // и сдвиг на 1

    return (n + 1) >> 1;

}

  
// вернуть четное число

static int getevenbits(int n)

{

  

    // получить MSB здесь

    n = getmsb(n);

  

    // генерируем даже

    // биты вроде 101010 ..

    n |= n >> 2;

    n |= n >> 4;

    n |= n >> 8;

    n |= n >> 16;

  

    // если бит нечетный

    // затем сдвигаемся на 1

    if ((n & 1) == 1)

        n = n >> 1;

  

    // вернуть даже

    // установить количество бит

    return n;

}

  
// установить все четные биты здесь

static int setallevenbits(int n)

{

    // взять или с четным

    // установить количество бит

    return n | getevenbits(n);

}

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

public static void main (String[] args)

{

    int n = 10;

    System.out.println(setallevenbits(n));

}
}

  
// Этот код предоставлен ajit

python3

# Эффективный Python 3
# программа для установки всех четных
# биты числа

  
# вернуть номер набора MSB

def getmsb(n):

  

    # установить все биты

    n |= n >> 1

    n |= n >> 2

    n |= n >> 4

    n |= n >> 8

    n |= n >> 16

  

    # возврат msb

    # увеличить n на 1

    # и сдвиг на 1

    return (n + 1) >> 1

  

  
# вернуть четное число

def getevenbits(n):

    

    # получить MSB здесь

    n = getmsb(n)

  

    # генерировать четные биты, такие как 101010 ..

    n |= n >> 2 

    n |= n >> 4 

    n |= n >> 8 

    n |= n >> 16 

  

    # если бит нечетный, то сдвиг на 1

    if (n & 1):

        n = n >> 1 

  

    # вернуть четное количество битов

    return

   

  
# установить все четные биты здесь

def setallevenbits(n):

      

    # взять или с четным количеством битов

    return n | getevenbits(n) 

   

n = 10 

print(setallevenbits(n)) 

  
# Этот код предоставлен
# Смита Динеш Семвал

C #

// Эффективная программа на C # для
// установить все четные биты числа

using System;

  

class GFG

{

      
// возвращаем номер набора msb

static int getmsb(int n)

{

  

    // установить все биты

    n |= n >> 1;

    n |= n >> 2;

    n |= n >> 4;

    n |= n >> 8;

    n |= n >> 16;

  

    // вернуть msb

    // увеличиваем n на 1

    // и сдвиг на 1

    return (n + 1) >> 1;

}

  
// вернуть четное число

static int getevenbits(int n)

{

  

    // получить MSB здесь

    n = getmsb(n);

  

    // генерируем даже

    // биты вроде 101010 ..

    n |= n >> 2;

    n |= n >> 4;

    n |= n >> 8;

    n |= n >> 16;

  

    // если бит нечетный

    // затем сдвигаемся на 1

    if ((n & 1) == 1)

        n = n >> 1;

  

    // вернуть даже

    // установить количество бит

    return n;

}

  
// установить все четные биты здесь

static int setallevenbits(int n)

{

    // взять или с четным

    // установить количество бит

    return n | getevenbits(n);

}

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

public static void Main ()

{

    int n = 10;

  

    Console.WriteLine(setallevenbits(n));

}
}

  
// Этот код предоставлен aj_36

PHP

<?php
// Эффективная программа php для установки
// все четные биты числа

  
// возвращаем номер набора msb

function getmsb($n)

{

  

    // установить все биты

    $n |= $n >> 1;

    $n |= $n >> 2;

    $n |= $n >> 4;

    $n |= $n >> 8;

    $n |= $n >> 16;

  

    // вернуть msb

    // увеличиваем n на 1

    // и сдвиг на 1

    return ($n + 1) >> 1;

}

  
// вернуть четное число

function getevenbits($n)

{

  

    // получить MSB здесь

    $n = getmsb($n);

  

    // генерируем четные биты

    // как 101010 ..

    $n |= $n >> 2;

    $n |= $n >> 4;

    $n |= $n >> 8;

    $n |= $n >> 16;

  

    // если бит нечетный, то

    // сдвиг на 1

    if ($n & 1)

        $n = $n >> 1;

  

    // вернуть четное множество

    // число бит

    return $n;

}

  
// установить все четные биты здесь

function setallevenbits($n)

{

    // взять или с четным

    // установить количество бит

    return $n | getevenbits($n);

}

  

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

    $n = 10;

    echo setallevenbits($n);

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

Выход:

10

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

Установить все четные биты числа

0.00 (0%) 0 votes