为什么比特数总是2的幂?

57

我们有8位、16位、32位和64位的硬件架构和操作系统。但没有,比如说,42位或69位。

为什么呢?是因为2^n位更好的选择,还是只是为了与现有系统兼容?(显然,64位寄存器可以容纳两个32位指针,或者32位数据单元可以容纳4个字节,这显然很方便。)


1
正如您从答案中所看到的,这种情况是相对较新的发生。 - San Jacinto
18个回答

1
一个常见的原因是你可以用二进制来编号你的位。这在很多情况下都非常有用。例如,在位移或旋转操作中。你可以将一个16位值旋转0到15位。尝试旋转超过16位也很简单:那相当于旋转0位。而旋转1027位等同于旋转3位。一般来说,宽度为W的寄存器旋转N位等于对N模W进行旋转,当W是2的幂时,“模W”操作是微不足道的。

1

80186、8086、8088和80286及以后的处理器上的“实模式”使用20位分段内存寻址系统。80286具有24个本地地址线,386及以后的处理器则具有32或64个地址线。


1
该死的近指针和远指针。这是一种管理内存的恶心方式。 - San Jacinto
近距离/远距离的问题很烦人,但是考虑到现有的硬件设计和历史约束,选择确实很有限。 - DaveE
英特尔想要以任何代价实现向后兼容性,我认为这是一个过于严格的限制。这就使得摩托罗拉和Power PC能够推出更优秀但不兼容的设计。Mac只有在拥有足够强大的架构/指令集时才转向英特尔。当然,这是从技术角度来看的。从商业角度来看,我认为他们采取了正确的策略,以保持其市场份额的重要性。 - Jesse C. Slicer
@JesseC.Slicer 你认为苹果转向英特尔是因为英特尔有足够强大的指令集吗?我认为他们别无选择,IBM在台式机/笔记本领域并没有取得多大进展(因此没有Powerbook G5),而x86是唯一提供适当芯片的架构。前几款x86 Mac仍然是32位的,因此它们没有任何64位ISA改进。 - 8bittree

1
另一个计数器的例子:PIC16C8X系列微控制器具有14位宽的指令集。

你比我快了几秒钟!值得一提的是,这是一种哈佛体系结构处理器,14位字用于指令,而数据存储器则是标准的8位字节。 - rmeador

0

我们可以看一下PIC微控制器。


0

我那可靠的旧款HP 32S计算器有12位。


0

因为地址所保留的空间总是固定位数。 一旦您定义了固定的地址(或指针)大小,那么您希望充分利用它,因此您必须使用其所有值,直到它可以存储的最高数字。您可以从位数的倍数(0或1)中获得的最大数字始终是2的幂。


0

0

ICL 1900全部都是24位(字)。赌一下,记得这些的人不多。你记得吗?


抱歉,我的意思是当它模拟1900年代的范围时,它是一台真正的24位字机。 - Frank

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接