Рубрики

Поменяйте местами два куска в байте

Полубайт — это четырехбитовая агрегация или половина октета. В байте есть два куска.
Если дан байт, поменяйте местами два куска. Например, 100 представляется как 01100100 в байте (или 8 битах). Два откусывания — (0110) и (0100). Если мы поменяемся местами, мы получим 01000110, что составляет 70 в десятичном виде.

Чтобы поменять местами, мы можем использовать побитовые и побитовые операторы. Байт может быть представлен с использованием беззнакового символа в Си, так как размер типичного символа составляет 1 байт в типичном компиляторе Си.
Ниже приведена реализация вышеуказанной идеи.

C ++

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

using namespace std;

  

int swapNibbles(int x)

{

    return ( (x & 0x0F) << 4 | (x & 0xF0) >> 4 );

}

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

int main()

{

    int x = 100;

    cout << swapNibbles(x);

    return 0;

}

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

С

#include <stdio.h>

  

unsigned char swapNibbles(unsigned char x)

{

    return ( (x & 0x0F)<<4 | (x & 0xF0)>>4 );

}

  

int main()

{

    unsigned char x = 100;

    printf("%u", swapNibbles(x));

    return 0;

}

Джава

// Java программа для обмена двумя
// клев в байте

  

class GFG {

      

static int swapNibbles(int x)

{

    return ((x & 0x0F) << 4 | (x & 0xF0) >> 4);

}

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

public static void main(String arg[])

{

    int x = 100;

    System.out.print(swapNibbles(x));

}
}

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

python3

# python программа Swap
# два клев в байте

  

def swapNibbles(x):

    return ( (x & 0x0F)<<4 | (x & 0xF0)>>4 )

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

  

x = 100

print(swapNibbles(x))

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

C #

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

using System;

  

class GFG {

  
// Функция для обмена

static int swapNibbles(int x)

{

    return ((x & 0x0F) << 4 | 

            (x & 0xF0) >> 4);

}

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

public static void Main()

{

    int x = 100;

    Console.Write(swapNibbles(x));

}
}

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

PHP

<?php
// PHP программа для обмена двумя
// клев в байте

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

function swapNibbles($x)

{

    return ( ($x & 0x0F) << 4 | 

           ($x & 0xF0) >> 4 );

}

  

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

    $x = 100;

    echo swapNibbles($x);

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


Выход:

70

Объяснение:
100 это 01100100 в двоичном виде. Операция может быть разделена в основном на две части
1) Выражение « x & 0x0F » дает нам последние 4 бита x. Для x = 100 результат равен 00000100. Используя побитовый оператор «<<», мы сдвигаем последние четыре бита влево 4 раза и делаем новые последние четыре бита равными 0. Результат после сдвига равен 01000000.

2) Выражение « x & 0xF0 » дает нам первые четыре бита x. Для x = 100 результат равен 01100000. Используя побитовый оператор «>>», мы сдвигаем цифру вправо 4 раза и делаем первые четыре бита равными 0. Результат после сдвига равен 00000110.

В конце мы используем побитовое ИЛИ '|' операция двух выражений объяснена выше. Оператор OR помещает первый клев в конец, а последний — на первый. Для x = 100 значение (01000000) ИЛИ (00000110) дает результат 01000110, который равен 70 в десятичном виде.

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

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

Поменяйте местами два куска в байте

0.00 (0%) 0 votes