Рубрики

Как отключить определенный бит в номере?

Уровень сложности: Новичок

При заданном числе n и значении k поворот k-го бита в n.

Примеры:

Input:  n = 15, k = 1
Output: 14

Input:  n = 15, k = 2
Output: 13

Input:  n = 15, k = 3
Output: 11

Input:  n = 15, k = 4
Output: 7

Input:  n = 15, k >= 5
Output: 15 

Идея состоит в том, чтобы использовать побитовые операторы <<, & и ~. Используя выражение ~ (1 << (k — 1)) , мы получим число, в котором установлены все биты, кроме k-го бита. Если мы выполним битовое выражение & этого выражения с n, мы получим число, которое имеет все биты такие же, как n, кроме k-го бита, который равен 0.

Ниже приведена реализация вышеуказанной идеи.

C ++

#include <iostream>

using namespace std;

  
// Возвращает число, в котором все биты совпадают с n
// кроме k-го бита, который сделан 0

int turnOffK(int n, int k)

{

    // k должно быть больше 0

    if (k <= 0) return n;

  

    // Делаем n с числом со всеми установленными битами, кроме

    // К-й бит

    return (n & ~(1 << (k - 1)));

}

  
// Программа драйвера для проверки вышеуказанной функции

int main()

{

    int n = 15;

    int k = 4;

    cout << turnOffK(n, k);

    return 0;

}

Джава

// Java программа для отключения определенного бита в числе

import java.io.*;

  

class TurnOff 

{

    // Функция, возвращающая число, в котором все биты такие же, как и n

    // кроме k-го бита, который сделан 0

    static int turnOffK(int n, int k)

    {

        // k должно быть больше 0

        if (k <= 0

            return n;

   

        // Делаем n с числом со всеми установленными битами, кроме

        // К-й бит

        return (n & ~(1 << (k - 1)));

    }

      

    // Драйвер программы

    public static void main (String[] args) 

    {

        int n = 15;

        int k = 4;

        System.out.println(turnOffK(n, k));

    }

}
// Предоставлено Прамод Кумар

python3

# Возвращает число, которое
# имеет все биты такие же как n
# кроме k-го бита
# который сделан 0

  

def turnOffK(n,k):

  

    # k должно быть больше 0

    if (k <= 0): 

        return n

   

    # Do & of n с номером

    # со всеми установленными битами, кроме

    # k'th bit

    return (n & ~(1 << (k - 1)))

  

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

n = 15

k = 4

print(turnOffK(n, k))

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

C #

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

using System;

  

class GFG

{

      

    // Функция для возврата числа

    // все биты такие же как n

    // кроме k-го бита, который

    // сделал 0

    static int turnOffK(int n, int k)

    {

        // k должно быть больше 0

        if (k <= 0) 

            return n;

  

        // Делаем n с номером

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

        // К-й бит

        return (n & ~ (1 << (k - 1)));

    }

      

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

    public static void Main () 

    {

        int n = 15;

        int k = 4;

        Console.Write(turnOffK(n, k));

    }

}

  
// Этот код предоставлен Нитином Митталом.

PHP

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

  
// Возвращает число, которое имеет
// все биты такие же как n кроме
// k-й бит, который сделан 0

function turnOffK($n, $k)

{

      

    // k должно быть больше 0

    if ($k <= 0)

        return $n;

  

    // Делаем n с номером

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

    // К-й бит

    return ($n & ~(1 << ($k - 1)));

}

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

$n = 15;

$k = 4;

echo turnOffK($n, $k);

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


Выход:

7

Упражнение: Напишите функцию turnOnK (), которая включает k-й бит.

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

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

Как отключить определенный бит в номере?

0.00 (0%) 0 votes