binary - 二进制表示 - C++ 中的转换
问题描述
a = 13;
for (b = 8∗ sizeof(int)−1; b >= 0; b−−)
cout << ( (a & (1U << b)) > 0 );
有人可以解释一下,“cout”会发生什么吗?是条件吗?我的意思是,为什么它必须是 "> 0" ?在这个“cout”中正确的行动顺序是什么?谢谢
解决方案
(a & (1U << b)) > 0
如果检查通过则返回 1,否则返回 0。这个结果是由 打印的cout
。对两个整数执行按&
位与运算并按位1U << b
执行左位移(只是告诉编译器将该值视为无符号)。1
b
U
推荐阅读
- php - Laravel (5.7) Eloquent Many to Many with query on双方
- java - 卡在“Stem Remover”任务上
- docker - 将新应用程序部署到现有容器
- sql - 多个 SET 语句 SQL
- php - 我怎样才能联合sql查询
- php - Laravel 多对多关系返回 null
- javascript - 通过 pm2 从 nodejs 应用程序运行终端命令
- javascript - SVGGeometryElement.getPointAtLength 是否有反函数?
- powershell - 将管道输入直接写入管道输出
- java - 从另一个给定的日期生成一个 txt 文件,其中包含已排序的日期,以及给定的其他两个日期之间的日期