まず、情報を保存するときになぜそれらが必要なのかアドバイスをください
コンピュータはデータをバイナリで保存します。格納されている実際のビットの観点から考えると便利な場合があります。その場合、使い慣れた10進法は少し厄介になる可能性があります(変換は簡単ではないため)。ビットを完全に書き出すこともできますが、非常に小さい数値でも書き込むために多くのスペースを占めるため、これは面倒なことがよくあります(たとえば、10進数24521
は2進数です101111111001001
)。
代わりに、2の累乗の基数を使用する傾向があります。これは、各「桁」が2進表現の正確なビット数を表すという特性を持ちながら、2進よりもコンパクトだからです。たとえば、16進数(基数16)は、4ビット(「ニブル」)を表し、数字0
からF
(10進数15
/ 2進数1111
)までを表します。8進数(基数8)の数字は、3ビットを表し、数字0
から7
(binary 111
)までです。
以前の10進数の例は24521
、5FC9
16進数または57711
8進数です。右から順に、上記の2進数表現で各桁がそれぞれ4ビットと3ビットを表していることがわかります。したがって、他のベースでこれらのコンパクトな表現を見ながら、人間がバイナリ表現を視覚化することは(比較的)簡単です。
また、マークされたシステムに保存する必要がある値のタイプはどれですか?
これが何を意味するのかわかりません。上に示したように、これらすべてのシステムで同じ値を表すことができます。MySQLでは、2進リテラルを前に付けることで示し0b
、16進リテラルを前に付けることで示すことができます0x
。MySQLは8進リテラルをサポートしていません。
誰でもそれがどのように計算されているかを説明できますか?
<<
演算子はビット単位の左シフトを実行します。つまり、左側のオペランドのビットを、右側のオペランドで指定された桁数だけ左にシフトします。
位置ごとに、整数のビットが左にシフトされ、それらのビットによって表される値は2倍に増加します。これは、10進法で数字を左にシフトする効果に似ています。これにより、値が10倍に増加します(たとえば、50を左に1桁シフトすると、500になります。これは10倍になります。2進数110
(10進6)では1をシフトします。左の場所は1100
(10進数の12)を与え、これは2倍の増加です)。
あなたの場合、数値50(つまり110010
)のビットを左に2桁シフトすると、2倍の増加(つまり、全体で4倍の増加)が得られます。これ11001000
は10進数の200です。