首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何读取二进制数字作为输入?

如何读取二进制数字作为输入?
EN

Stack Overflow用户
提问于 2014-08-22 07:05:21
回答 4查看 37.9K关注 0票数 11

用户是否有办法在C或C++中输入二进制数字?

如果我们写这样的东西

代码语言:javascript
运行
复制
int a = 0b1010;
std::cout << a << std::endl

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

但当我们试着写

代码语言:javascript
运行
复制
int n;
std::cin >> n;
int t = 0bn;

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

EN

Stack Overflow用户

回答已采纳

发布于 2014-08-22 07:23:08

这里有点混乱,让我们把它弄清楚。

  • 0b1010是一个整数字面值,是一个用基2写的常数,编译时整数值。同样,0xA在基16中是文字,10在基10中。所有这些都是指相同的整数,这只是告诉编译器您指的是哪个数字的另一种方式。在运行时,在内存中,这个整数总是表示为一个基-2数字.
  • std::cout << a;获取a的整数值,并输出其字符串表示形式。默认情况下,它在基10中输出它,但是您可以使用std::hex修饰符让它在基16中输出。没有预定义的修饰符要在二进制中打印。所以你需要自己去做(或者用谷歌搜索,这是一个常见的问题)。
  • 最后,0b只用于定义整数字面值。它是而不是运行时操作符。回想一下,所有的ints都表示为内存中的基2数字。从机器的角度来看,其他基础不存在,intint,所以没有什么可转换的。如果需要从字符串中读取二进制数字,则需要将反向代码滚到打印它的操作(std::cin >> n假设输入是一个基数10的数字,因此如果输入实际上位于基2中,则读取错误的数字)。
票数 8
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25441364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档