1. ホーム
  2. java

[解決済み] Javaで、バイナリ形式の整数定数を定義することはできますか?

2023-05-18 04:38:42

質問

16進数や8進数で整数の定数を定義するのと同じように、2進数で定義することは可能ですか?

私はこれが本当に簡単な(そして愚かな)質問であることを認めます。 私のグーグル検索は空振りに終わっています。

どのように解決するのですか?

Java SE 7 のリリースでは、バイナリ表記が箱から出しても標準装備されています。構文は非常にわかりやすく、バイナリについてきちんと理解していれば一目瞭然です。

byte fourTimesThree = 0b1100;
byte data = 0b0000110011;
short number = 0b111111111111111; 
int overflow = 0b10101010101010101010101010101011;
long bow = 0b101010101010101010101010101010111L;

また、クラスレベルの変数をバイナリで宣言するという点については、バイナリ記法で静的変数を初期化しても全く問題ありません。

public static final int thingy = 0b0101;

ただ、データ量が多すぎて数値がオーバーフローしないように気をつけないと、コンパイラーエラーが発生します。

byte data = 0b1100110011; // Type mismatch: cannot convert from int to byte

さて、本当に凝りたいのであれば、Java 7の他のきちんとした新機能である、数値リテラルとアンダースコアを組み合わせることができます。アンダースコアを使った2進数表記の例を見てみましょう。

int overflow = 0b1010_1010_1010_1010_1010_1010_1010_1011;
long bow = 0b1__01010101__01010101__01010101__01010111L;

これですっきりしましたね、言うまでもなく可読性は抜群です。

これらのコード スニペットは、TheServerSide でこのトピックについて書いた小さな記事から引っ張ってきました。詳細については、それを自由にチェックしてください。

Java 7 とバイナリ表記。OCP Java プログラマ (OCPJP) 試験をマスターする