Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

Cでビット演算子を使用して数値を交換する


問題

Cプログラミング言語でビット演算子を使用して数値を交換するにはどうすればよいですか?

解決策

コンパイラは、指定された数値を交換します。最初に、指定された10進数を同等の2進数に変換し、ビット単位のXOR演算を実行して、あるメモリ位置から別のメモリ位置に数値を交換します。

アルゴリズム

START
Step 1: declare two variables a and b
Step 1: Enter two numbers from console
Step 2: swap two numbers by using BITWISE operator
        a=a^b
        b=a^b
        a=a^b
Step 3: Print a and b values
STOP

プログラム

#include<stdio.h>
int main(){
   int a,b;
   printf("enter the values for a and b:");
   scanf("%d%d",&a,&b);
   printf("value of a=%d and b=%d before swap\n",a,b);
   a= a^b;
   b= a^b;
   a= a^b;
   printf("value of a=%d and b=%d after swap",a,b);
   return 0;
}

出力

enter the values for a and b:24 56
value of a=24 and b=56 before swap
value of a=56 and b=24 after swap
Explanation:
a=24 binary equivalent of 24 =011000
b=56 binary equivalent of 56= 111000
a= a^b = 100000
b=a^b=100000 ^ 111000 =011000
a=a^b=100000 ^ 011000 = 111000
Now a=111000 decimal equivalent =56
b= 011000 decimal equivalent = 24

  1. 参照による呼び出しを使用して循環順序で番号を交換するC++プログラム

    3つの数値は、参照による呼び出しを使用して関数CyclicSwapping()に渡すことにより、循環順に入れ替えることができます。この関数は、周期的に数値を交換します。 参照による呼び出しを使用して循環順に番号を交換するプログラムは次のとおりです- 例 #include<iostream> using namespace std; void cyclicSwapping(int *x, int *y, int *z) {    int temp;    temp = *y;    *y = *x;   &nbs

  2. C#で一時変数を使用せずに2つの数値を交換する方法

    2つの数値を交換するには、3番目の変数を使用し、一時変数を使用せずに算術演算子を実行します。 スワッピング用に2つの変数を設定します- val1 = 5; val2 = 10; 次に、スワップに対して次の操作を実行します- val1 = val1 + val2; val2 = val1 - val2; val1 = val1 - val2; 例 using System; namespace Demo {    class Program {       static void Main(string[] args) {   &