Scalaを初めて使い慣れました。私はそれが-128を含むことができますByte
タイプだという奇妙な事実が発生しましたが、ないScala Byte型には-128を含めることができますが、128には含めることはできません。
scala> val overflow1NegByte = -129:Byte
<console>:11: error: type mismatch;
found : Int(-129)
required: Byte
val overflow1NegByte = -129:Byte
^
scala> val overflow1NegByte = -128:Byte
overflow1NegByte: Byte = -128
scala> val overflow1PosByte = 128:Byte
<console>:11: error: type mismatch;
found : Int(128)
required: Byte
val overflow1PosByte = 128:Byte
^
scala> val overflow1PosByte = 127:Byte
overflow1PosByte: Byte = 127
128は、どうやらそれは負の数を示すために、と感じている、最初のフラグが使用されています。正の数については、このフラグも予約されています。これは理解できる。しかし、なぜ正の数よりも負の数です。
非常に単純な答え:-128と128の両方であなたは(0を含む)2 * 128 + 1 = 257の数字を持っているあなたはで上に絞るしたいがこれは8ビットのみ、すなわち256の組み合わせを有する。だから、あなたは128か-128のいずれかを犠牲にしなければならない。なぜ128?もう少し長い話です。 –
REPLに移動して、整数型、Byte、Short、Int、およびLongのそれぞれに対して、 'MinValue'と' MaxValue'を呼び出します。 (つまり、Byte.MinValue、Byte.MaxValue、Short.MinValueなど)、このパターンは一貫していることがわかります。 – jwvh