本文概述
- C ++
- Java
- Python3
- C#
- C ++
- C
例子:
Input: n = 28, p1 = 0, p2 = 3Output: 2128 in binary is 11100.If we swap 0'th and 3rd digits, we get 10101 which is 21 in decimal.Input: n = 20, p1 = 2, p2 = 3Output: 24
我们强烈建议你最小化浏览器, 然后自己尝试。
【如何交换给定整数中的两位()】方法1:
这个想法是首先找到这些位, 然后使用
基于异或的交换概念
, 即要交换两个数字" x"和" y", 我们执行x = x ^ y, y = y ^ x和x = x ^ y。
下面是上述想法的实现
C ++
// C program to swap bits in an integer
#include<
stdio.h>
// This function swaps bit at positions p1 and p2 in an integer n
int swapBits(unsigned int n, unsigned int p1, unsigned int p2)
{
/* Move p1'th to rightmost side */
unsigned int bit1 =(n >
>
p1) &
1;
/* Move p2'th to rightmost side */
unsigned int bit2 =(n >
>
p2) &
1;
/* XOR the two bits */
unsigned int x = (bit1 ^ bit2);
/* Put the xor bit back to their original positions */
x = (x <
<
p1) | (x <
<
p2);
/* XOR 'x' with the original number so that the
two sets are swapped */
unsigned int result = n ^ x;
}/* Driver program to test above function*/
int main()
{
int res =swapBits(28, 0, 3);
printf ( "Result = %d " , res);
return 0;
}
Java
// Java program to swap bits in an integer
import java.io.*;
class GFG
{// This function swaps bit at
// positions p1 and p2 in an integer n
static int swapBits( int n, int p1, int p2)
{
/* Move p1'th to rightmost side */
int bit1 = (n >
>
p1) &
1 ;
/* Move p2'th to rightmost side */
int bit2 = (n >
>
p2) &
1 ;
/* XOR the two bits */
int x = (bit1 ^ bit2);
/* Put the xor bit back to
their original positions */
x = (x <
<
p1) | (x <
<
p2);
/* XOR 'x' with the original
number so that the
two sets are swapped */
int result = n ^ x;
return result;
}/* Driver code*/
public static void main (String[] args)
{
int res = swapBits( 28 , 0 , 3 );
System.out.println ( "Result = " + res);
}
}// This code is contributed by ajit..
Python3
# Python3 program to swap bits in an integer # This function swaps bit at positions
# p1 and p2 in an integer n
def swapBits(n, p1, p2):''' Move p1'th to rightmost side '''
bit1 = (n >
>
p1) &
1''' Move p2'th to rightmost side '''
bit2 = (n >
>
p2) &
1''' XOR the two bits '''
x = (bit1 ^ bit2)''' Put the xor bit back to their
original positions '''
x = (x <
<
p1) | (x <
<
p2)''' XOR 'x' with the original number
so that thetwo sets are swapped '''
result = n ^ x
return result# Driver Code
res = swapBits( 28 , 0 , 3 )
print ( "Result =" , res) # This code is contributed by SHUBHAMSINGH10
C#
// C# program to swap bits in an integer
using System;
class GFG
{// This function swaps bit at positions
// p1 and p2 in an integer n
static int swapBits( int n, int p1, int p2)
{
/* Move p1'th to rightmost side */
int bit1 = (n >
>
p1) &
1;
/* Move p2'th to rightmost side */
int bit2 = (n >
>
p2) &
1;
/* XOR the two bits */
int x = (bit1 ^ bit2);
/* Put the xor bit back to
their original positions */
x = (x <
<
p1) | (x <
<
p2);
/* XOR 'x' with the original
number so that the
two sets are swapped */
int result = n ^ x;
return result;
}/* Driver code*/
static public void Main ()
{
int res = swapBits(28, 0, 3);
Console.WriteLine( "Result = " + res);
}
}// This code is contributed by akt_mit
输出如下:
Result = 21
方法2:
仅使用左移和XOR运算符可以解决此问题。这个想法是通过将所需的次数左移1次并使用XOR运算符来设置/取消设置第(p1)位和第(p2)位
(num = num ^(1 < < bit_position))
.
下面是上述代码的实现。
C ++
//C++ code for swapping given bits of a number
#include<
iostream>
using namespace std;
int swapBits( int n, int p1, int p2)
{
//left-shift 1 p1 and p2 times
//and using XOR
n ^= 1 <
<
p1;
n ^= 1 <
<
p2;
return n;
}//Driver Code
int main()
{
cout <
<
"Result = " <
<
swapBits(28, 0, 3);
return 0;
}//This code is contributed by yashbeersingh42
C
//C code for swapping given bits of a number
#include<
stdio.h>
int swapBits( int n, int p1, int p2)
{
//left-shift 1 p1 and p2 times
//and using XOR
n ^= 1 <
<
p1;
n ^= 1 <
<
p2;
return n;
}//Driver Code
int main()
{
printf ( "Result = %d" , swapBits(28, 0, 3));
return 0;
}//This code is contributed by yashbeersingh42
Output:Result = 21
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。
推荐阅读
- PHP Ds PriorityQueue count()函数用法介绍
- Python OpenCV cv2.line()方法用法介绍
- 高级算法设计(打印N皇后问题中的所有解决方案)
- 如何在Windows中安装Jupyter Notebook()
- C#方法介绍和用法详细指南
- PHP | pos()函数用法详细指南
- 经典推荐(一些有用的Linux技巧详细介绍)
- 输入字符串中出现的最大字符数|s2
- Python检查两个列表是否相同