VBのTrueは-1

VBでTrueを整数型に変換すると「-1」になる理由とは?

今日、驚いたことがありました。Visual Basic (VB) で True を整数型にキャストすると、その結果が「1」ではなく「-1」になるのです。初めて知ったときは、「なぜ?」と思いました。

この記事では、この現象の理由について解説します。

なぜTrueは-1になるのか?

一般的にプログラミング言語では、True は「1」、False は「0」として扱われることが多いですが、VBは異なる挙動を示します。具体的には、True は「-1」、False は「0」として表現されます。この動作は、VBの設計によるもので、古いコンピュータのアーキテクチャや言語仕様の影響を受けています。

VBでは、True はビット単位で全てのビットが「1」の状態を指します。整数型で「-1」を2進数に表すと、すべてのビットが「1」となります(符号付き2の補数表現)。一方、False は全てのビットが「0」です。このため、True を整数に変換すると「-1」となるわけです。

歴史的な背景

この仕様は、VBがMS-DOSや初期のWindows環境で動作していた時代のレガシーを引き継いでいます。当時の環境では、ブール値をビットマスクとして扱うことが一般的であり、True が全ビット「1」となることで、ビット操作が効率的に行えるという利点がありました。

参考資料

詳しくは、Stack Overflowのこちらのスレッドも参考にしてください:
Why does casting a Boolean to an Integer return -1 for True?

結論

VBでのTrue = -1 という挙動は、プログラミング言語の仕様と歴史的な背景によるものです。この特徴を知っておくと、コードを書く際や他の言語と比較する際に、より深い理解が得られるでしょう。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です