我正在上一门关于操作系统的大学课程,我们正在学习如何将二进制转换为十六进制,十进制转换为十六进制等,今天我们刚刚学习了如何使用两个数字的补数(~number + 1)将有符号/无符号数字存储在内存中。
我们有几个练习要在纸上做,我希望在把我的工作交给老师之前能够验证我的答案。我为前几个练习写了一个c++程序,但现在我被困在如何用以下问题验证我的答案:
char a, b;
short c;
a = -58;
c = -315;
b = a >> 3;
我们需要显示a
, b
和c
的二进制表示在内存中。
我已经在纸上做过了,它给了我以下结果(所有的二进制表示在内存的数字之后的二补):
A = 00111010(它是一个char,所以是1字节)
B = 00001000(它是一个char,所以是1字节)
C = 11111110 11000101(它是短的,所以是2字节)
有办法证实我的答案吗?在c++中是否有一种标准的方法来显示一个数字在内存中的二进制表示,或者我必须自己编写每一步(计算两者的补数,然后转换为二进制)?我知道后者不会花很长时间,但我很好奇是否有一个标准的方法来做到这一点。