我正在学习一门关于操作系统的大学课程,我们正在学习如何将二进制转换为十六进制、十进制转换为十六进制等,今天我们刚刚学习了如何使用二进制补码(~number + 1)在内存中存储带符号/无符号数。
我们有几个练习题需要手写计算,但在提交作业给老师之前我想要验证我的答案是否正确。我已经用C++编写了前几个问题的程序,但现在卡在如何验证以下问题的答案上:
char a, b;
short c;
a = -58;
c = -315;
b = a >> 3;
我们需要显示a
,b
和c
在内存中的二进制表示。
我已经手写计算了它们的二进制补码,并得到以下结果:
a = 00111010(它是一个字符,所以1个字节)
b = 00001000(它是一个字符,所以1个字节)
c = 11111110 11000101(它是一个短整型,所以2个字节)
有没有一种方法可以验证我的答案?在C++中是否有标准的方法来显示数字在内存中的二进制表示,还是我必须自己编写每个步骤的代码(计算二进制补码,然后转换为二进制)?我知道后者不会花费太长时间,但我想知道是否有一种标准的方式来这样做。
-58
是负数,所以我立刻知道第一个位应该是1
,但你的答案第一个位是0
。而且00111010
右移 3 位是000 00111
,没有任何数学运算,所以那个答案也是错误的。 - Mooing Duck