gpt4 book ai didi

c++ - 如何读取二进制数作为输入?

转载 作者:可可西里 更新时间:2023-11-01 16:30:59 30 4
gpt4 key购买 nike

有没有办法让用户在 C 或 C++ 中输入二进制数?

如果我们这样写

int a = 0b1010;
std::cout << a << std::endl

然后输出结果为 10(使用适当的编译器扩展时)。

但是当我们尝试写

int n;
std::cin >> n;
int t = 0bn;

它给了我们一个错误,所以谁能建议我们如何直接读取二进制数作为输入而不是使用字符串来存储输入?

最佳答案

这里有点困惑,让我们理清一下。

  • 0b1010是一个整型文字,一个常量,以 2 为基数编写的编译时整数值。同样,0xA是 base 16 和 10 中的文字以 10 为基数。所有这些都指的是同一个整数,这只是告诉编译器你指的是哪个数字的不同方式。在运行时,在内存中,此整数始终表示为以 2 为基数的数字。

  • std::cout << a ;取 a 的整数值并输出它的字符串表示形式。默认情况下它以 10 为基数输出,但你可以即使用 std::hex 修饰符让它以 16 为基数输出。没有预定义的修饰符可以以二进制形式打印。所以你需要自己做(或者用谷歌搜索,这是一个常见问题)。

  • 0b最后, 用于定义整数文字。它不是运行时运算符。召回,所有int s 在内存中表示为基数 2。从机器的角度来看,其他基地不存在,intint ,所以没有什么可以转换的。如果您需要从字符串中读取二进制数,您可以将反向代码滚动到打印它的方式( std::cin >> n 假设输入是一个以 10 为基数的数字,所以如果输入实际上是旨在以 2 为基数)。

关于c++ - 如何读取二进制数作为输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25441364/

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