2020年11月07日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 949 count

【入門級】実行するごとにオンとオフを切り換える

Written By: 川俣 晶連絡先

 実行するごとにオンとオフを切り換えるコードは書けるでしょうか。

 bool型の変数の内容をTrueならFalse, FalseならTrueにするなら否定演算子!を使うだけで可能です。

 数値の0と1を切り換えるのはXOR演算子^を使えば簡単ですが、これはビットの意味が分かっていないと使えません。

 ハードルが高いと思ったら剰余演算子%を使って【+1して2で割った余りを得る】という方法でも構いません。少し回りくどい処理になりますが、これで【0なら1、1なら0】を得るという機能になってくれます。これが2を返すことはありません。2で割ったあまりは0か1だからです。

罠の数々 §

  • 無限に0と1を繰り返す数を得る方法はこれだけではない。たとえば通し番号を2で割った余りを得ると、それも0と1を繰り返すことになる。実現方法はいろいろある! 工夫次第だ!

参考リンク §

ブール論理演算子 (C# リファレンス)

メンバー アクセス演算子と式 (C# リファレンス)

算術演算子 (C# リファレンス)

 Visual Studioで^にキャレットを置いてF1キーを押すと【メンバー アクセス演算子と式 (C# リファレンス)】のページに連れて行かれるが、実はここで使っている^演算子の説明は【ブール論理演算子 (C# リファレンス)】のページにある。上記のリンクを辿って正しい説明はどちらか確認しておこう。C#は文脈から識別できるとき、同じ名前に別の意味を定義しているケースがあるので、注意しよう。

リポジトリ §

https://github.com/autumn009/cshowto

OnOff §

using System;

class Program

{

    static void Main()

    {

        // 否定法

        bool switch1 = false;

        for (int i = 0; i < 20; i++)

        {

            switch1 = !switch1;

            Console.Write(switch1 ? "[OFF]" : "[ON]");

        }

        Console.WriteLine();

        // XOR法

        int switch2 = 0;

        for (int i = 0; i < 20; i++)

        {

            switch2 = switch2 ^ 1;

            Console.Write($"[{switch2}]");

        }

        Console.WriteLine();

        // 剰余法

        int switch3 = 0;

        for (int i = 0; i < 20; i++)

        {

            switch3 = (switch3 + 1) % 2;

            Console.Write($"[{switch3}]");

        }

        Console.WriteLine();

    }

}

実行結果

[OFF][ON][OFF][ON][OFF][ON][OFF][ON][OFF][ON][OFF][ON][OFF][ON][OFF][ON][OFF][ON][OFF][ON]

[1][0][1][0][1][0][1][0][1][0][1][0][1][0][1][0][1][0][1][0]

[1][0][1][0][1][0][1][0][1][0][1][0][1][0][1][0][1][0][1][0]

Facebook

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
11月
08日
【入門級】if (!(i != 2 && i != 4))を短くする
3days 0 count
total 852 count
【C# コーディング How To】の前のコンテンツ
2020年
11月
06日
【入門級】ローカル関数にstaticを付けると本当に速くなるか?
3days 0 count
total 902 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20201107080036
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.