LINUX.ORG.RU

История изменений

Исправление kostyarin_, (текущая версия) :

a |= 0xff – выставить младшие 8 бит в 1
a &= 0xff – оставить только младшие 8 бит
a |= (0xff << (1*8)) – по аналогии для битов [8; 15]
a &= (0xff << (1*8)) – по аналогии для битой [8; 15]

В комбинации с инверсией позволяет творить что угодно в битовом поле. А всякая фигня типа set_bit_1 (a) – для кретинов a’k’a «я не хочу врубаться во что-то настолько простое».

На заметку

0x00 - 0000 0000

0x01 - 0000 0001
0x02 - 0000 0010
0x04 - 0000 0100
0x08 - 0000 1000

0x10 - 0001 0000
0x20 - 0010 0000
0x40 - 0100 0000
0x80 - 1000 0000

0xff - 1111 1111

Инверсия (зависит от размера)

~0x00 --> 0xff
~0xff --> 0x00

Вообще <<, >>, |, &, ~ да и всё наверное, что нужно знать.

В случае особой одарённости есть en wiki на это счёт, там всё в примерах довольно подробно. Да и русскоязычных источников, уверен, валом.

Ну ещё знаковые типы спереди заполняются знаковым битом при сдвиге вправо.

В примерах на Go https://play.golang.org/p/BvZ2IUPFRD8

Гошный оператор &^ можно заменить на & (~(value)) вроде бы.

Исправление kostyarin_, :

a |= 0xff – выставить младшие 8 бит в 1
a &= 0xff – оставить только младшие 8 бит
a |= (0xff << 1) – по аналогии для битов [8; 15]
a &= (0xff << 1) – по аналогии для битой [8; 15]

В комбинации с инверсией позволяет творить что угодно в битовом поле. А всякая фигня типа set_bit_1 (a) – для кретинов a’k’a «я не хочу врубаться во что-то настолько простое».

На заметку

0x00 - 0000 0000

0x01 - 0000 0001
0x02 - 0000 0010
0x04 - 0000 0100
0x08 - 0000 1000

0x10 - 0001 0000
0x20 - 0010 0000
0x40 - 0100 0000
0x80 - 1000 0000

0xff - 1111 1111

Инверсия (зависит от размера)

~0x00 --> 0xff
~0xff --> 0x00

Вообще <<, >>, |, &, ~ да и всё наверное, что нужно знать.

В случае особой одарённости есть en wiki на это счёт, там всё в примерах довольно подробно. Да и русскоязычных источников, уверен, валом.

Ну ещё знаковые типы спереди заполняются знаковым битом при сдвиге вправо.

В примерах на Go https://play.golang.org/p/BvZ2IUPFRD8

Гошный оператор &^ можно заменить на & (~(value)) вроде бы.

Исправление kostyarin_, :

a |= 0xff – выставить младшие 8 бит в 1
a &= 0xff – оставить только младшие 8 бит
a |= (0xff << 1) – по аналогии для битов [8; 15]
a &= (0xff << 1) – по аналогии для битой [8; 15]

В комбинации с инверсией позволяет творить что угодно в битовом поле. А всякая фигня типа set_bit_1 (a) – для кретинов a’k’a «я не хочу врубаться во что-то настолько простое».

На заметку

0x00 - 0000 0000

0x01 - 0000 0001
0x02 - 0000 0010
0x04 - 0000 0100
0x08 - 0000 1000

0x10 - 0001 0000
0x20 - 0010 0000
0x40 - 0100 0000
0x80 - 1000 0000

0xff - 1111 1111

Инверсия (зависит от размера)

~0x00 --> 0xff
~0xff --> 0x00

Вообще <<, >>, |, &, ~ да и всё наверное, что нужно знать.

В случае особой одарённости есть en wiki на это счёт, там всё в примерах довольно подробно. Да и русскоязычных источников, уверен, валом.

Ну ещё знаковые типы спереди заполняются знаковым битом при сдвиге вправо.

Исправление kostyarin_, :

a |= 0xff – выставить младшие 8 бит в 1
a &= 0xff – оставить только младшие 8 бит
a |= (0xff << 1) – по аналогии для битов [8; 15]
a &= (0xff << 1) – по аналогии для битой [8; 15]

В комбинации с инверсией позволяет творить что угодно в битовом поле. А всякая фигня типа set_bit_1 (a) – для кретинов a’k’a «я не хочу врубаться во что-то настолько простое».

На заметку

0x00 - 0000 0000

0x01 - 0000 0001
0x02 - 0000 0010
0x04 - 0000 0100
0x08 - 0000 1000

0x10 - 0001 0000
0x20 - 0010 0000
0x40 - 0100 0000
0x80 - 1000 0000

0xff - 1111 1111

Инверсия (зависит от размера)

~0x00 --> 0xff
~0xff --> 0x00

Вообще <<, >>, |, &, ~ да и всё наверное, что нужно знать.

В случае особой одарённости есть en wiki на это счёт, там всё в примерах довольно подробно. Да и русскоязычных источников, уверен, валом.

Исправление kostyarin_, :

a |= 0xff – выставить младшие 8 бит в 1
a &= 0xff – оставить только младшие 8 бит
a |= (0xff << 1) – по аналогии для битов [8; 15]
a &= (0xff << 1) – по аналогии для битой [8; 15]

В комбинации с инверсией позволяет творить что угодно в битовом поле. А всякая фигня типа set_bit_1 (a) – для кретинов a’k’a «я не хочу врубаться во что-то настолько простое».

На заметку

0x00 - 0000 0000

0x01 - 0000 0001
0x02 - 0000 0010
0x04 - 0000 0100
0x08 - 0000 1000

0x10 - 0001 0000
0x20 - 0010 0000
0x40 - 0100 0000
0x80 - 1000 0000

0xff - 1111 1111

Инверсия (зависит от размера)

~0x00 --> 0xff
~0xff --> 0x00

Вообще <<, >>, |, &, ~ да и всё наверное, что нужно знать.

Исходная версия kostyarin_, :

a |= 0xff – выставить младшие 8 бит в 1
a &= 0xff – оставить только младшие 8 бит
a |= (0xff << 1) – по аналогии для битов [8; 15]
a &= (0xff << 1) – по аналогии для битой [8; 15]

В комбинации с инверсией позволяет творить что угодно в битовом поле. А всякая фигня типа set_bit_1 (a) – для кретинов a’k’a «я не хочу врубаться во что-то настолько простое».

На заметку

0x00 - 0000 0000

0x01 - 0000 0001
0x02 - 0000 0010
0x04 - 0000 0100
0x08 - 0000 1000

0x10 - 0001 0000
0x20 - 0010 0000
0x40 - 0100 0000
0x80 - 1000 0000

0xff - 1111 1111

Инверсия (зависит от размера)

~0x00 --> 0xff
~0xff --> 0x00