我对在mysql数据库中使用二进制,十六进制和八进制系统非常感兴趣.首先,请告诉我为什么在存储信息时我们需要它们,因为大量信息或为什么?
还有哪种类型的值必须存储在标记系统中?
另外这里的位操作符如“<
这是example => SELECT 50<< 2 AS例子;
这给我们结果200,任何人都可以解释它是如何计算的?
谢谢回答 :))
解决方法:
First of all please give me an advice why we need them during storing information
计算机以二进制形式存储数有时我们根据存储的实际位进行思考是有用的,在这种情况下,我们熟悉的十进制系统可能有点尴尬(因为转换不是直截了当的);我们可以完全写出这些位,但这通常太麻烦,因为即使很小的数字占用了大量的空间来写(例如十进制24521是二进制101111111001001).
相反,我们倾向于使用2的幂的基数,因为它们比二进制更紧凑,同时具有每个’数字’代表二进制表示中的精确位数的属性.例如,十六进制(base-16)数字表示四位(“半字节”),其中数字0到F(十进制15 /二进制1111);八进制(base-8)数字表示三位,其中数字0到7(二进制111).
我们之前的十进制24521示例是十六进制的5FC9或八进制的57711:从右边开始,您可以看到每个数字分别代表上述二进制表示中的4和3位.因此,我们人类(相对)容易地看到二进制表示,同时在其他基础中查看这些紧凑的表示.
Also which type of values must be stored in marked systems?
我不确定你的意思.如上所述,可以在所有这些系统中表示相同的值.在MySQL中,我们可以通过在前面加上0x来指示一个二进制文字,前面加上0b和一个十六进制文字. MySQL不支持八进制文字.
anyone can explain how it is calculating it ?
<< operator执行按位左移.也就是说,它将左侧操作数的位移位右侧操作数给出的位数.
对于每个位置,整数的位向左移位,由这些位表示的值增加两倍.它类似于在十进制系统中左移数字的效果,其中值增加十倍(例如,50向左移动一个位置给出500,这是十倍增加;在二进制110(十进制6)中移位剩下的一个地方给出1100(十进制12),这是两倍的增加).
在你的情况下,将数字50(即110010)的位移到左边两个位置产生2倍增加(即总体增加4倍):11001000是十进制200.