我正在上一本关于操作系统的大学课程,我们正在学习如何从二进制转换为十六进制,从十进制转换为十六进制,等等。今天,我们刚刚学习了如何使用二进制补码(〜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 ++中是否有一种标准的方法可以显示数字在内存中的二进制表示形式,还是我必须自己对每个步骤进行编码(计算二者的补码,然后转换为二进制)?我知道后者不会花很长时间,但是我很好奇是否有标准的方法可以这样做。
std::hex
)操纵器-我将其作为练习来解决其余问题……