新手问题;我有两个二进制数;比如说;0b11 和 0b00。如何将这两个数字结合起来得到 0b1100 (即将它们彼此相邻放置以形成一个新数字)
问问题
360 次
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 回答