我正在为AP计算机科学做一个暑期作业。为此,我正在学习不同的数字基础系统,以及如何转换它们。这些主题让我想知道为什么程序员使用不同的数字基础系统。所以我想知道
为什么程序员使用不同的数字基础系统?为什么不使用熟悉的十进制呢?
发布于 2016-07-19 23:16:00
计算机使用二进制码。
二进制用于对指令和数据进行编码。这是因为晶体管很好地存储和操作二进制。结果表明,只要有足够的布尔运算,就可以进行加法、减法、乘法、除法等数学运算。
使用二进制以外的基是可能的,但传统上并不是很成功。不过,一些SSD晶体管技术存储多个值的每个单元(虽然通常的功率为2,仍然)。真空管能很好地支持2种以上的状态.;)
程序员通常需要知道设置了哪些位,哪些在多位模式中是清晰的(例如“字节”或“单词”)。如果你需要知道,基-2,基-8和基-16都比基数-10更直接有用。二进制是最容易看到的个别位,但变得非常长相当快。如今,在32位和64位计算机中,十六进制(基- 16 )是首选的:每个十六进制数字代表4位,因此64位值是16十六进制数字,而不是64二进制数字。
八进制(基数-8)曾用于一些计算机。例如,数字设备公司PDP-8是一台12位计算机.它很好地把自己借给了基-8,所以一个12位的“单词”是4个八进制数字。八进制仍然有效,但在8位字节的标准化方面有点不顺。(三个十六进制数字也可以工作,但指令集的主要操作码字段是3位,那时程序员花了很多时间研究机器代码。)
请注意,正如程序员使用各种数字基一样,今天,程序员使用的是各种各样的不同的数字。
这些都是编码(以及后来解释)二进制信息的方法,更不用说如何与人类共享这些信息了。
串行化是另一个相关术语;它是一种将表示转换为各种用途的方法,例如人类可读性或网络传输。
发布于 2016-07-21 20:28:36
它总是归结为寻址空间。在现代计算机中,任何地址空间都是2的幂。例如,一个字节(2^8)可以容纳256个不同的值,2字节字(2^16)可以容纳65536。与此直接相关的是,内存大小仅为2的幂。将这些值表示为十进制并不“适合”地址空间,这意味着您在填充空格时不会用完数字。十不是电脑的本土化,而是人类用手指数数的本土化。
如果我们看看这个字节,然后计数,直到它满了,以16为基数,我们将从00到FF。我们永远不需要超过2位数,很明显,80是一半。这也是很容易转换为二进制,因为你可以映射每个16基数字到四个2基数字(位)。因此,如果你必须处理比特掩码,16基数将比10基数容易得多。
https://softwareengineering.stackexchange.com/questions/325255
复制相似问题