请问一个数在内存中的二进位是什么样子的
用Intel处理器,一个LongInt,四字节,在内存中,高位字节在后,低位字节在前,这个我知道。
请问:
(1)一个单字节数,如十进制数22,它在内存中的各二进位是什么样子的?
是0001 0110 还是0110 1000 还是 0110 0001 还是 1000 0110 ?
(2)为什么Intel处理器有高位字节在后,低位字节在前这样的“约定”?与之不同的CPU有哪些?
[解决办法]
> (1)一个单字节数,如十进制数22,它在内存中的各二进位是什么样子的?
是0001 0110 还是0110 1000 还是 0110 0001 还是 1000 0110 ?
8位(bit)二进制位(位7-位0)权值:256 64 32 16 8 4 2 1
22对应: 0 0 0 1 0 1 1 0
22的8位二进制码:0001 0110
(2)为什么Intel处理器有高位字节在后,低位字节在前这样的“约定”?与之不同的CPU有哪些?
如果计算表达式65+22,CPU可以轻易的通过计算
0 0 0 1 0 1 1 0
+0 1 0 0 0 0 0 1
-----------------
= 0 1 0 1 0 1 1 1
通过高字节再后面可以非常容易的对应数据的2进制的权值。而且能够轻易的实现数据的长度扩展,以及字节长度不同的数据的运算问题。还可以方便对内存数据的访问。