gpt4 book ai didi

c++ - 如何打印(使用 cout)二进制形式的数字?

转载 作者:IT老高 更新时间:2023-10-28 11:27:59 25 4
gpt4 key购买 nike

我正在学习关于操作系统的大学类(class),我们正在学习如何将二进制转换为十六进制、十进制转换为十六进制等。今天我们刚刚学习了如何使用二进制补码将有符号/无符号数字存储在内存中(~数字 + 1)。

我们需要在纸上做一些练习,我希望能够在将作业提交给老师之前验证我的答案。我为前几个练习编写了一个 C++ 程序,但现在我不知道如何用以下问题验证我的答案:

char a, b;

short c;
a = -58;
c = -315;

b = a >> 3;

我们需要显示abc的二进制表示在内存中

我已经在纸上完成了它,它给了我以下结果(内存中所有二进制表示形式的数字在二进制补码之后):

a = 00111010 (it's a char, so 1 byte)

b = 00001000 (it's a char, so 1 byte)

c = 11111110 11000101 (it's a short, so 2 bytes)

有没有办法验证我的答案? C++ 中是否有标准方法来显示数字内存中的二进制表示,还是我必须自己编写每个步骤(计算二进制补码然后转换为二进制)?我知道后者不会花这么长时间,但我很好奇是否有标准的方法来做到这一点。

最佳答案

最简单的方法可能是创建一个 std::bitset表示值,然后将其流式传输到 cout

#include <bitset>
...

char a = -58;
std::bitset<8> x(a);
std::cout << x << '\n';

short c = -315;
std::bitset<16> y(c);
std::cout << y << '\n';

关于c++ - 如何打印(使用 cout)二进制形式的数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7349689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com