初心者の質問; 私は2つの2進数を持っています。たとえば、0b11および0b00。2つの数値を組み合わせて0b1100を取得するにはどうすればよいですか(つまり、新しい数値を形成するためにそれらを隣り合わせに配置します)
質問する
360 次
2 に答える
6
ビットごとのシフト and or 演算子を使用する場合:
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 */
ノート:
a
ただし、この場合は 0 であるため、OR は必要ありません。- シフト演算子の
2
in は、「2 ビット左にシフトする」ことを意味します。右シフトは>>
演算子です。
于 2012-10-09T10:03:06.857 に答える