История изменений
Исправление
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