SE 7 Java では、値をバイナリ リテラルとして指定できます。ドキュメントによると、「バイト」は8ビットの情報を保持できるタイプで、値は-128から127です。
理由はわかりませんが、次のようにJavaでバイナリリテラルをバイトに割り当てようとすると、8ビットを定義できず、7ビットしか定義できません。
byte b = 0b000_0000; //solves to the value 0
byte b1 = 0b000_0001; //solves to the value 1
byte b3 = 0b000_0010; //solves to the value 2
byte b4 = 0b000_0011; //solves to the value 3
これらの 7 ビットを使用して最後のいくつかの可能性に到達するまで、以下のように続けます。
byte b5 = 0b011_1111; //solves to the value 63
byte b6 = 0b111_1111; //solves to the value 127
負の数にしたい場合は、次のように先頭に - を追加する必要があります。
byte b7 = -0b111_1111; //solves to the value -127
現在、私が抱えている問題の半分は、8 ビットのデータ型であると彼らが私に言っていることを説明するために、7 ビットしか使用していないことです。後半は、32ビットすべてを定義できる32ビットint型を使用しない限り、2の補数としてスレッド化されないように見えることです(「符号インジケータビット」が含まれます)。
今、範囲内の数字-128を表示する方法を検索すると、それ以上の説明なしにこのようにするように言われました:
byte b8 = 0b1111_1111_1111_1111_1111_1111_1000_0000;
最後の 8 ビット (1000 0000) は、8 ビットを使用した 2 の補数で -128 を表していることがはっきりとわかりますが、これ以上混乱することはなく、質問してみます。
- 上記の 32 ビットの長さは 32 ビット (Java-) の int 値ではありませんか?
- 32 ビット値を 8 ビット (java-) バイト型に割り当てることができるのはなぜですか?
または一般的に:なぜこのように割り当てる必要があるのですか?
これに関するリンク/情報は素晴らしいでしょう! お時間を割いてお読みいただき、また事前に追加情報をお寄せいただきありがとうございます。
よろしくヤン