ビット操作を使用してCで+演算子を使用せずに2つの数値を追加する方法

karthickeyan

私は最近このインタビューの質問に出くわしました、そして私はビット操作が得意ではありません。関数「f」が何をするのか説明してもらえますか?この再帰関数が何をするのかわかりません。

unsigned int f (unsigned int a , unsigned int b)
{
   return a ?   f ( (a&b) << 1, a ^b) : b;
}

Visual Studioにコードを貼り付けてロジックをテストしようとしましたが、コンパイラーが「タイプ 'uint'を 'bool'に暗黙的に変換できません。戻り値の条件ステートメント(a?)に何かがありませんか?」というエラーメッセージがスローされます。面接の質問が上記とまったく同じであることを確認してください

ケビン・ディトラリア

さて、これに言及しているコメントの数人は、2つの数字を追加するだけです。いくつかの入力を試して結果を記録するよりも、それを理解するためのより良い方法がわかりません。

例:

f(5,1) --> returns f(2,4) --> returns f(0,6) --> returns 6

 1.) 5&1 = 1 bit shifted = 2:  5^1 = 4
 2.) 2&4 = 0 bit shifted = 0:  2^4 = 6
 3.) a = 0 so return b of 6

f(4,3) --> returns f(0,7) --> returns 7

1.) 4&3 = 0 bit shifted = 0:  4^3 = 7
2.) a = 0 so return b of 7

出力のいくつかの例を示した後、fが2つの入力を足し合わせて返すと仮定できると思います。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Haskellで+演算子を使用せずに2つの数値を加算する

分類Dev

+または算術演算子を使用せずに2つの数値を追加します

分類Dev

三項演算子を使用せずに最大2つの数値を検索するためのC / C ++マクロ

分類Dev

JavaScriptで2つの数値を「「+」または「-」演算子を使用せずに」追加するにはどうすればよいですか?

分類Dev

ビット演算子とビット操作を使用して、Cで2つの整数を交換するにはどうすればよいですか?

分類Dev

*演算子を使用せずに数値を乗算する

分類Dev

2つの入力値に対してJavascriptで比較演算子を使用する方法

分類Dev

ビットごとの演算子を使用して1つのintに複数の値をパックする

分類Dev

乗算演算子を使用せずに2つの正の数を乗算する再帰関数を作成する方法

分類Dev

ビット操作を使用して2つの数値を追加します

分類Dev

ビット演算子を使用して2つのブール値をインターリーブする方法は?

分類Dev

複数の値に対してLIKE演算子を使用する方法

分類Dev

Cでビット演算子を使用して、ある数値が別の数値と等しいかどうかを判断する方法

分類Dev

ブール引数を使用してビット演算子のC ++警告を有効にする方法

分類Dev

ビットごとの演算子を使用してJavaの関数に複数の整数値を渡す方法は?

分類Dev

%演算子を使用せずにJavaScriptでFizzBuzzを作成する方法

分類Dev

ビット演算子を使用して2つの整数を比較する

分類Dev

2つの変数をXORし、結果を3番目の変数に追加すると、演算子+ =で機能しますが、演算子=と+を組み合わせて使用することはできません。

分類Dev

特定の演算子(+、-、/、*、%、+ =%=など)を使用せずに範囲内の分割可能な数値を取得する

分類Dev

Javaで乗算、除算、およびmod演算子を使用せずに2つの整数を除算する

分類Dev

ビット単位の演算子を使用してCで最も負の2の補数を返す

分類Dev

Cでビット演算子を使用して、値が範囲内にあるかどうかを確認する

分類Dev

jstlで 'および'演算子を使用して2つの変数をチェックする方法

分類Dev

Laravelでlike演算子を使用して2つのwhere句を使用する方法

分類Dev

配列要素を見つける方法は、演算子やマップを使用せずに他の要素の2倍であるか、o(n)を使用して15行未満のコードでスライスします

分類Dev

Makefileで条件演算子を使用して2つの変数を比較する

分類Dev

2つの関数がそれぞれブール値を返す場合、ビット演算子を使用してそれらを組み合わせるのは安全ですか?

分類Dev

list.extendメソッドを使用せず、「+」演算子を使用せずにリストを拡張する方法

分類Dev

ビット演算子を使用して論理演算子を実装する方法

Related 関連記事

  1. 1

    Haskellで+演算子を使用せずに2つの数値を加算する

  2. 2

    +または算術演算子を使用せずに2つの数値を追加します

  3. 3

    三項演算子を使用せずに最大2つの数値を検索するためのC / C ++マクロ

  4. 4

    JavaScriptで2つの数値を「「+」または「-」演算子を使用せずに」追加するにはどうすればよいですか?

  5. 5

    ビット演算子とビット操作を使用して、Cで2つの整数を交換するにはどうすればよいですか?

  6. 6

    *演算子を使用せずに数値を乗算する

  7. 7

    2つの入力値に対してJavascriptで比較演算子を使用する方法

  8. 8

    ビットごとの演算子を使用して1つのintに複数の値をパックする

  9. 9

    乗算演算子を使用せずに2つの正の数を乗算する再帰関数を作成する方法

  10. 10

    ビット操作を使用して2つの数値を追加します

  11. 11

    ビット演算子を使用して2つのブール値をインターリーブする方法は?

  12. 12

    複数の値に対してLIKE演算子を使用する方法

  13. 13

    Cでビット演算子を使用して、ある数値が別の数値と等しいかどうかを判断する方法

  14. 14

    ブール引数を使用してビット演算子のC ++警告を有効にする方法

  15. 15

    ビットごとの演算子を使用してJavaの関数に複数の整数値を渡す方法は?

  16. 16

    %演算子を使用せずにJavaScriptでFizzBuzzを作成する方法

  17. 17

    ビット演算子を使用して2つの整数を比較する

  18. 18

    2つの変数をXORし、結果を3番目の変数に追加すると、演算子+ =で機能しますが、演算子=と+を組み合わせて使用することはできません。

  19. 19

    特定の演算子(+、-、/、*、%、+ =%=など)を使用せずに範囲内の分割可能な数値を取得する

  20. 20

    Javaで乗算、除算、およびmod演算子を使用せずに2つの整数を除算する

  21. 21

    ビット単位の演算子を使用してCで最も負の2の補数を返す

  22. 22

    Cでビット演算子を使用して、値が範囲内にあるかどうかを確認する

  23. 23

    jstlで 'および'演算子を使用して2つの変数をチェックする方法

  24. 24

    Laravelでlike演算子を使用して2つのwhere句を使用する方法

  25. 25

    配列要素を見つける方法は、演算子やマップを使用せずに他の要素の2倍であるか、o(n)を使用して15行未満のコードでスライスします

  26. 26

    Makefileで条件演算子を使用して2つの変数を比較する

  27. 27

    2つの関数がそれぞれブール値を返す場合、ビット演算子を使用してそれらを組み合わせるのは安全ですか?

  28. 28

    list.extendメソッドを使用せず、「+」演算子を使用せずにリストを拡張する方法

  29. 29

    ビット演算子を使用して論理演算子を実装する方法

ホットタグ

アーカイブ