。数値の補数

WBOY
WBOYオリジナル
2024-08-23 06:35:11509ブラウズ

. Number Complement

476。数値の補数

難易度: 簡単

トピック: ビット操作

整数の補数は、バイナリ表現ですべての 0 を 1 に、すべての 1 を 0 に反転したときに得られる整数です。

  • たとえば、整数 5 は 2 進数で「101」であり、その補数は整数 2 である「010」です。

整数を指定すると、その補数を返します。

例 1:

  • 入力: 数値 = 5
  • 出力: 2
  • 説明: 5 の 2 進表現は 101 (先頭のゼロビットなし) で、その補数は 010 です。したがって、2 を出力する必要があります。

例 2:

  • 入力: 数値 = 1
  • 出力: 0
  • 説明: 1 の 2 進表現は 1 (先頭のゼロビットなし) で、その補数は 0 です。したがって、0 を出力する必要があります。

制約:

  • 1 231

注:

この質問は 1009 と同じです。基数 10 の整数の補数

解決策:

指定された整数のバイナリ表現のビットを反転し、結果の整数を返す必要があります。

問題を解決する手順:
  1. 数値をバイナリ表現に変換します。
  2. ビットを反転します
  3. (つまり、0 を 1 に、1 を 0 に変更します)。
  4. 反転されたバイナリ文字列を整数に変換します

このソリューションを PHP で実装してみましょう: 476。数値の補数

<?php
// Example usage:
$num = 5;
echo findComplement($num); // Output: 2

$num = 1;
echo findComplement($num); // Output: 0
?>

説明:
  • decbin($num)
  • : 指定された整数をバイナリ文字列表現に変換します。
  • ビットの反転
  • : バイナリ文字列を反復処理し、1 か 0 かをチェックして各ビットを反転します。
  • bindec($flipped)
  • : 反転されたバイナリ文字列を整数に変換します。

実行例:
  1. 入力:

    5
    • バイナリ表現: "101"
    • 反転されたバイナリ: "010"
    • 出力: 2
  2. 入力:

    1
    • バイナリ表現: "1"
    • 反転されたバイナリ: "0"
    • 出力: 0

このソリューションは、指定された数値の 2 進表現のビットを反転することによって、補数を効率的に計算します。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で リポジトリ

にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:
  • LinkedIn
  • GitHub

以上が。数値の補数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。