2017-02-21 23 views
-3

我的目标是查看操作系统是否使用2的补充底层体系结构。经过一段时间后,我进入了一个完整的空白,我记得1的赞美有两个不同的表示0,(0000 0000)和(1111 1111)。现在我已经在代码中处理了二进制数字。如果有人能告诉我这个想法是否可以用来分辨这些差异,那么我就跳了起来,如果可以的话,我可以使用一些关于如何开始编写这些代码的提示。 谢谢底层体系结构2的补充表示

回答

2

了解平台类型实现的一个显而易见的方法是打印感兴趣对象的对象字节,一个数字,其负面:

int a = 5, b = -a; 

const unsigned char * p = (const unsigned char *)&a; 
const unsigned char * q = (const unsigned char *)&b; 

for (size_t i = 0; i != sizeof(int); ++i) 
    fprintf(stdout, "%02X ", p[i]); 
fputc('\n', stdout); 

for (size_t i = 0; i != sizeof(int); ++i) 
    fprintf(stdout, "%02X ", q[i]); 
fputc('\n', stdout); 
+0

[演示](http://melpon.org/wandbox/permlink/y37WGXlqFBtf3dQ9) –

+0

所以,如果我理解你使用的想法这个权利我之前谈到的,而是显示两个值为0.您显示两个边界是127到-128,而一个是127到-127? –