2

初心者の質問; 私は2つの2進数を持っています。たとえば、0b11および0b00。2つの数値を組み合わせて0b1100を取得するにはどうすればよいですか(つまり、新しい数値を形成するためにそれらを隣り合わせに配置します)

4

2 に答える 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 は必要ありません。
  • シフト演算子の2in は、「2 ビット左にシフトする」ことを意味します。右シフトは>>演算子です。
于 2012-10-09T10:03:06.857 に答える