2

新手问题;我有两个二进制数;比如说;0b11 和 0b00。如何将这两个数字结合起来得到 0b1100 (即将它们彼此相邻放置以形成一个新数字)

4

2 回答 2

6

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

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 */
于 2012-10-09T10:01:17.243 回答
2

左移<<和按位 OR |

int a = 0;             /* 0b00 */
int b = 3;             /* 0b11 */
int c = (b << 2) | a;  /* 0b1100 */

笔记:

  • 但不需要 OR,因为a在这种情况下为 0。
  • 移位运算符中的2表示“向左移动两位”。右移是>>运算符。
于 2012-10-09T10:03:06.857 回答