我对在 mysql 数据库中使用二进制、十六进制和八进制系统非常感兴趣。首先,请给我一个建议,为什么我们在存储信息时需要它们,因为信息太多,或者为什么?
另外,哪种类型的值必须存储在标记系统中?
另外这里还有像“
这是例子=>SELECT 50<<2 AS example;
这给了我们结果 200,任何人都可以解释它是如何计算的吗?
谢谢回答 :))
首先请给我一个建议,为什么我们在存储信息时需要它们
计算机以二进制形式存储数据。有时,我们根据实际情况进行思考是有用的bits被存储,在这种情况下,我们熟悉的十进制系统可能会有点尴尬(因为转换并不简单);我们可以完整地写出这些位,但这通常太麻烦了,因为即使很小的数字也会占用大量的空间来写入(例如十进制)24521
是二进制的101111111001001
).
相反,我们倾向于使用 2 的幂的基数,因为它们比二进制更紧凑,同时具有每个“数字”代表二进制表示中精确位数的属性。例如,十六进制(以 16 为基数)数字表示四位(“半字节”),其中的数字0
通过到F
(十进制15
/ 二进制1111
);八进制(以 8 为基数)数字代表三位数字0
通过到7
(二进制111
).
我们之前的十进制示例24521
将会5FC9
十六进制或57711
八进制:从右边开始,您可以看到上面的二进制表示中的每个数字分别代表 4 和 3 位。因此,对于我们人类来说,在查看其他基础中的这些紧凑表示的同时,可以(相对)轻松地可视化二进制表示。
另外,哪种类型的值必须存储在标记系统中?
我不确定你的意思是什么。如上所述,相同的值可以在所有这些系统中表示。在 MySQL 中,我们可以通过在其前面添加以下内容来指示二进制文字0b
和一个十六进制文字,前面加上0x
。 MySQL 不支持八进制文字。
任何人都可以解释它是如何计算的?
The <<操作员 http://dev.mysql.com/doc/en/bit-functions.html#operator_left-shift执行按位左移。也就是说,它将左侧操作数的位向左移动右侧操作数给出的位数。
对于每个位置bits一个整数左移,这些位表示的值增加两倍。和平移的效果类似digits在我们的十进制系统中,值增加了十倍(例如,50 向左移动一位得到 500,增加了十倍;在二进制中110
(十进制 6)左移一位给出1100
(十进制 12),增加两倍)。
在你的例子中,移动数字 50 的位(即110010
) two左边的位置产生 2 两倍的增长(即总体增长四倍):11001000
是十进制的200。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)