在Quora上查看这个问题HERE(“数据存储在寄存器和内存中是十六进制还是二进制?”),我认为最好的答案是说数据持久性是通过硬件的物理属性实现的,并且是不能直接与二进制或十六进制相关联。
我一直认为计算机是'二进制',但刚刚意识到这只适用于组件的使用(磁上/下或开/关晶体管),而不一定是组织,例如,记忆内容。
即。从理论上讲,你可以在内存中创建一个使用“二进制组件”但不是二进制组件的抽象,如下所示:
100000110001010001100
100001001001010010010
111101111101010100001
100101000001010010010
100100111001010101100
然后将其识别为'hello'的(糟糕绘制)图像,而不是'hello'的ASCII编码。
SO上的答案(What's the difference between a word and byte?)提到处理器可以处理'字',即一次几个字节,所以虽然信息表示必须是二进制的,但我不明白为什么必须进行信息处理。
计算机可以直接对十六进制算术吗?在这种情况下,内存/寄存器中信息的内部表示是二进制还是十六进制?
答案 0 :(得分:1)
也许“数字计算机”将是一个很好的起始术语,然后从那里“二进制数字”(“位”)。在电子方面,值的术语有时是“高”和“低”。你是对的,之后的一切都取决于操作。大多数情况下,比特组一起操作。通常组是1,8,16,32和64位。这些比特的含义取决于程序,但有些操作与某种程度的含义并驾齐驱。
当一组比特的含义未知或不重要时,人类喜欢能够辨别每个比特的值。可以使用二进制,但是难以读取超过8位。虽然很少对4位组进行操作,但十六进制更易读,并且无论位数如何,通常都使用十六进制。有时使用八进制,但这是基于上下文,其中对3位的子分组有一些意义或避免超过9的数字。
整数可以以二进制补码格式存储,并且CPU通常具有这种整数的指令。一旦这样的操作是否定的。对于一组8位,它将1映射到-1,... 127到-127,-1到1,... -127到127,0到0和-128到-128。十进制对于人类来说可能是最有价值的,而不是基数256,基数2或基数16.在无符号十六进制中,这将是01到FF,...,00到00,80到80。
有关CPU如何对一组位进行整数加法的介绍,请参阅adder circuits。
其他数字格式包括IEEE-754浮点和二进制编码的十进制数。
我想你明白数字电路是二进制的。因此,基于以上所述,是的,尽管实际存储,操作确实在更高的概念水平上运行。