首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中将两个数字转换为一个数字

问在C中将两个数字转换为一个数字
EN

Stack Overflow用户
提问于 2012-10-09 17:59:33
回答 2查看 355关注 0票数 1

新手问题;我有两个二进制数;例如,0b11和0b00。如何组合这两个数字才能得到0b1100 (即将它们放在一起形成一个新的数字)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-09 18:01:17

使用按位移位和或运算符:

代码语言:javascript
复制
unsigned int a = 0x03;  /* Binary 11 (actually binary 00000000000000000000000000000011) */
unsigned int b = 0x00;  /* Binary 00 */

/* Shift `a` two steps so the number becomes `1100` */
/* Or with the second number to get the two lower bits */
unsigned int c = (a << 2) | b;

/* End result: `c` is now `1100` binary, or `0x0c` hex, or `12` decimal */
票数 5
EN

Stack Overflow用户

发布于 2012-10-09 18:03:07

左移<<和按位OR |

代码语言:javascript
复制
int a = 0;             /* 0b00 */
int b = 3;             /* 0b11 */
int c = (b << 2) | a;  /* 0b1100 */

备注:

但是不需要

  • OR,因为在这种情况下a是0。
  • 移位运算符中的2表示“向左移位两位”。右移的是>>运算符。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12797479

复制
相关文章

相似问题

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