Рубрики

Положение самого правого установленного бита

Напишите однострочную функцию для возврата позиции первой 1 справа налево в двоичном представлении целого числа.

I/P    18,   Binary Representation 010010
O/P   2
I/P    19,   Binary Representation 010011
O/P   1

Algorithm: (Example 12(1100))
Let I/P be 12 (1100)

1. Take two's complement of the given no as all bits are reverted
except the first '1' from right to left (0111)

2  Do a bit-wise & with original no, this will return no with the
required one only (0100)

3  Take the log2 of the no, you will get (position - 1) (2)

4  Add 1 (3)

Программа:

C ++

// C ++ программа для Position
// самого правого установленного бита
#include <iostream>
#include <math.h>

using namespace std;

  

class gfg

{

  

public:

unsigned int getFirstSetBitPos(int n)

{

    return log2(n & -n) + 1;

}
};

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

int main()

{

    gfg g;

    int n = 12;

    cout << g.getFirstSetBitPos(n);

    return 0;

}

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

С

// C программа для Position
// самого правого установленного бита
#include <math.h>
#include <stdio.h>

  

unsigned int getFirstSetBitPos(int n)

{

    return log2(n & -n) + 1;

}

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

int main()

{

    int n = 12;

    printf("%u", getFirstSetBitPos(n));

    getchar();

    return 0;

}

Джава

// Java-код для положения самого правого установленного бита

class GFG {

  

    public static int getFirstSetBitPos(int n)

    {

        return (int)((Math.log10(n & -n)) / Math.log10(2)) + 1;

    }

  

    // Код диска

    public static void main(String[] args)

    {

        int n = 12;

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

    }

}
// Этот код предоставлен Арнавом Кр. Мандал

python3

Код Python для позиции
# самого правого установленного бита

  

import math

  

def getFirstSetBitPos(n):

  

     return math.log2(n&-n)+1

  
# код водителя

  

n = 12

print(int(getFirstSetBitPos(n)))

  
# Этот код добавлен
# Анант Агарвал.

C #

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

using System;

  

class GFG {

    public static int getFirstSetBitPos(int n)

    {

        return (int)((Math.Log10(n & -n)) 

                / Math.Log10(2)) + 1;

    }

  

    // Метод драйвера

    public static void Main()

    {

        int n = 12;

        Console.WriteLine(getFirstSetBitPos(n));

    }

}

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

PHP

<?php
// PHP-код для позиции
// крайний правый бит

  

function getFirstSetBitPos($n)

{

    return ceil(log(($n& - 

                     $n) + 1, 2));

}

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

$n = 12;

echo getFirstSetBitPos($n);

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


Выход:

3

Использование функции ffs (): функция ffs () возвращает индекс первого младшего значащего установленного бита. Индексирование начинается в функции ffs () с 1.
Например:
n = 12 = 1100
В приведенном выше примере ffs (n) возвращает самый правый установленный индекс бита, который равен 3.

C ++

// C ++ программа для поиска
// позиция первой справа
// установить бит в данном номере.
#include <bits/stdc++.h>

using namespace std;

  
// Функция, чтобы найти самый правый
// установить бит в данном номере.

int getFirstSetBitPos(int n)

{

    return ffs(n);

}

  
// Функция драйвера

int main()

{

    int n = 12;

    cout << getFirstSetBitPos(n) << endl;

    return 0;

}

Используя XOR и & оператор:
Инициализируйте m как 1, проверьте его XOR с битами, начинающимися с самого правого бита. Сдвиг влево m на единицу, пока мы не найдем первый установленный бит, поскольку первый установленный бит дает число, когда мы выполняем операцию & с m.

C ++

// C ++ программа для поиска первой
// крайний правый бит с использованием оператора XOR
#include <bits/stdc++.h>

using namespace std;

  
// функция, чтобы найти самый правый установленный бит

int PositionRightmostSetbit(int n)

{

    // переменная положения инициализируется 1

    // переменная m используется для проверки установленного бита

    int position = 1;

    int m = 1;

  

    while (!(n & m)) {

  

        // Сдвиг влево

        m = m << 1;

        position++;

    }

    return position;

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

int main()

{

    int n = 16;

    // вызов функции

    cout << PositionRightmostSetbit(n);

    return 0;

}

Джава

// Java-программа для поиска
// первый правый установленный бит
// используя оператор XOR

  

class GFG {

  

    // функция для поиска

    // самый правый установленный бит

    static int PositionRightmostSetbit(int n)

    {

        // переменная положения инициализируется

        // с переменной 1 м используется для

        // проверяем установленный бит

        int position = 1;

        int m = 1;

  

        while ((n & m) == 0) {

  

            // Сдвиг влево

            m = m << 1;

            position++;

        }

        return position;

    }

  

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

    public static void main(String[] args)

    {

        int n = 16;

  

        // вызов функции

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

    }

}

  
// Этот код добавлен
// Смита

python3

# Python3 программа для поиска
# первый правый набор
# бит с использованием оператора XOR

  
Функция #, чтобы найти
# крайний правый бит

def PositionRightmostSetbit(n):

  

    # Позиционная переменная инициализировать

    # используется переменная 1 м

    # проверить установленный бит

    position = 1

    m = 1

  

    while (not(n & m)) :

  

        # Сдвиг влево

        m = m << 1

        position += 1

      

    return position

  
Код водителя

n = 16

  
# вызов функции

print(PositionRightmostSetbit(n))

  
# Этот код добавлен
# от Smitha

C #

// C # программа для поиска
// первый правый установленный бит
// используя оператор XOR

using System;

  

class GFG {

  

    // функция для поиска

    // самый правый установленный бит

    static int PositionRightmostSetbit(int n)

    {

        // переменная положения инициализируется

        // с переменной 1 м используется для

        // проверяем установленный бит

        int position = 1;

        int m = 1;

  

        while ((n & m) == 0) {

  

            // Сдвиг влево

            m = m << 1;

            position++;

        }

        return position;

    }

  

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

    static public void Main()

    {

        int n = 16;

  

        // вызов функции

        Console.WriteLine(

            PositionRightmostSetbit(n));

    }

}

  
// Этот код добавлен
// автор @ajit

PHP

<?php
// PHP программа для поиска
// первый правый установленный бит
// используя оператор XOR

  
// функция для поиска
// крайний правый бит

function PositionRightmostSetbit($n)

{

    // переменная положения инициализируется

    // с переменной 1 м используется для

    // проверяем установленный бит

    $position = 1;

    $m = 1;

  

    while (!($n & $m)) 

    {

  

        // Сдвиг влево

        $m = $m << 1;

        $position++;

    }

    return $position;

}

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

$n = 16;

  
// вызов функции

echo PositionRightmostSetbit($n);

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

Выход:

5

Этот подход был внесен Мубашшир Ахмад

Используя сдвиг влево (<<): инициализируйте pos с 1, итерируйте до INT_SIZE (здесь 32) и проверьте, установлен бит или нет, если бит установлен, то прервите цикл, иначе увеличьте значение pos.

C ++

// C ++ реализация вышеуказанного подхода
#include <iostream>

using namespace std;

#define INT_SIZE 32

  

int Right_most_setbit(int num)

{

    int pos = 1;

    // подсчитываем позицию первого установленного бита

    for (int i = 0; i < INT_SIZE; i++) {

        if (!(num & (1 << i)))

            pos++;

        else

            break;

    }

    return pos;

}

int main()

{

    int num = 18;

    int pos = Right_most_setbit(num);

    cout << pos << endl;

    return 0;

}
// Этот подход предоставлен @vivek kumar9

Джава

// Java реализация вышеуказанного подхода

public class GFG {

      

    static int INT_SIZE = 32;

  

    static int Right_most_setbit(int num)

    {

        int pos = 1;

        // подсчитываем позицию первого установленного бита

        for (int i = 0; i < INT_SIZE; i++) {

            if ((num & (1 << i))== 0)

                pos++;

              

            else

                break;

        }

        return pos;

    }

      

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

    public static void main(String[] args) {

      

         int num = 18;

            int pos = Right_most_setbit(num);

            System.out.println(pos);

    }

}   

python3

# Python 3 реализация вышеуказанного подхода

  

INT_SIZE = 32

  

def Right_most_setbit(num) :

  

    pos = 1

  

    # считать позицию первого установленного бита

    for i in range(INT_SIZE) :

        if not(num & (1 << i)) :

            pos += 1

        else :

            break

          

    return pos

      

  

  

if __name__ == "__main__" :

  

    num = 18

    pos = Right_most_setbit(num)

    print(pos)

      
# Этот код предоставлен ANKITRAI1

C #

// C # реализация вышеуказанного подхода

using System;

  

class GFG {

      

    static int INT_SIZE = 32; 

  

    static int Right_most_setbit(int num) 

    

        int pos = 1;

          

        // подсчитываем позицию

        // первого установленного бита

        for (int i = 0; i < INT_SIZE; i++) 

        

            if ((num & (1 << i))== 0) 

                pos++; 

              

            else

                break

        

        return pos; 

    

      

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

    static public void Main ()

    {

        int num = 18; 

        int pos = Right_most_setbit(num); 

        Console.WriteLine(pos); 

    

PHP

<?php
// PHP реализация вышеупомянутого подхода

  

function Right_most_setbit($num)

{

    $pos = 1;

    $INT_SIZE = 32;

      

    // подсчитываем позицию

    // первого установленного бита

    for ($i = 0; $i < $INT_SIZE; $i++) 

    {

        if (!($num & (1 << $i)))

            $pos++;

        else

            break;

    }

    return $pos;

}

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

$num = 18;

$pos = Right_most_setbit($num);

echo $pos;

echo ("\n")

  
// Этот код добавлен
// от Shivi_Aggarwal
?>


Выход :

 2

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

Положение самого правого установленного бита

0.00 (0%) 0 votes