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