В цифровом компьютерном программировании побитовая операция работает с одним или несколькими битовыми шаблонами или двоичными числами на уровне их отдельных битов. Это быстрое, примитивное действие, непосредственно поддерживаемое процессором, и используется для управления значениями для сравнений и вычислений. oprations
blockquote>
- побитовое И
- побитовое ИЛИ
- побитовое NOT
- побитовое XOR
- и т. Д.
Элемент списка
AND|0 1 OR|0 1 ---+---- ---+---- 0|0 0 0|0 1 1|0 1 1|1 1 XOR|0 1 NOT|0 1 ---+---- ---+--- 0|0 1 |1 0 1|1 0
Например.
203: 1100 1011 AND 15: 0000 1111 ------------------ = 11: 0000 1011
Использование побитового оператора
- Операторы с левым и правым сдвигами эквивалентны умножению и делению на x * 2y соответственно.
Например.
int main() { int x = 19; printf ("x << 1 = %d\n" , x <<1); printf ("x >> 1 = %d\n", x >>1); return 0; } // Output: 38 9
- & amp; оператор может быть использован для быстрой проверки того, является ли число нечетным или даже
Например.
int main() { int x = 19; (x & 1)? printf("Odd"): printf("Even"); return 0; } // Output: Odd
- Быстрый поиск минимума x и y без
if else
statmentНапример:
int min(int x, int y) { return y ^ ((x ^ y) & - (x < y)) }
- Десятичное значение для двоичного преобразования
Например.
#include <stdio.h> int main () { int n , c , k ; printf("Enter an integer in decimal number system\n " ) ; scanf( "%d" , & n ); printf("%d in binary number system is: \n " , n ) ; for ( c = 31; c >= 0 ; c -- ) { k = n >> c ; if ( k & 1 ) printf("1" ) ; else printf("0" ) ; } printf(" \n " ); return 0 ; }
- Шифрование шлюза XOR является популярным методом, благодаря его усложнению и повторному использованию программистом. побитовый оператор XOR является наиболее полезным оператором с точки зрения технического интервью.
смещение битвуза работает только с + ve числом
Также существует широкий диапазон использования побитовой логики
SimpleGrantedAuthority
не подходит для автоматического картирования с Джексоном; у него нет конструктора без аргументов и сеттера для поля authority
.
Так что ему нужен специальный десериализатор . Примерно так:
class SimpleGrantedAuthorityDeserializer extends StdDeserializer<SimpleGrantedAuthority> {
public SimpleGrantedAuthorityDeserializer() {
super(SimpleGrantedAuthority.class);
}
@Override
public SimpleGrantedAuthority deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
JsonNode tree = p.getCodec().readTree(p);
return new SimpleGrantedAuthority(tree.get("authority").textValue());
}
}
Зарегистрируйте его с Джексоном во всем мире следующим образом:
objectMapper.registerModule(new SimpleModule().addDeserializer(
SimpleGrantedAuthority.class, new SimpleGrantedAuthorityDeserializer()));
Или пометьте поле (поля) с помощью:
@JsonDeserialize(using = SimpleGrantedAuthorityDeserializer.class)
Примечание: вам не нужен сериализатор , потому что SimpleGrantedAuthority
имеет метод getAuthority()
, который может использовать Джексон.