👨‍💻
Coding Library
  • 👨‍💻Coding Library
  • 👾Linux
    • Basic Commands
    • Other commands
      • Ls
      • Mv
      • Chmod
      • Ln
      • Cat
      • Wc
      • Grep
      • Sed
      • Find
    • Sistema de ficheros
      • Inodos
  • 📦Git
    • Page 3
  • 🖊️Vim
    • Vim Basics
      • Gramatica de Vim
      • Moviendote por un archivo
    • Todo y mas
  • 🏛️C
    • Estructuras de datos
      • Listas Enlazadas
      • Colas
      • Pilas
      • Arboles
    • Valgrind
    • Operadores de bits
    • Procesos e Hilos
      • Fork
      • Wait
      • Waitpid
      • Semáforos
      • Estructura sigaction
      • Signals
    • MiniLibX
      • Ventanas (windows)
      • Imprimir Pixels
      • Imagenes
      • Colores
      • Eventos
      • Loops (bucles)
      • Leer imagenes
    • Readline
    • Funciones
      • opendir
      • access
    • Network Programming
      • Structs
      • Llamadas al sistema
      • Synchronous I/O Multiplexing
        • kqueue
  • 🌃C++
    • Clases
      • Herencia
      • Shallow and deeps copies
      • Clases abstractas y Interfaces
      • Reasignar operadores
    • Punteros y referencias
    • Manejo de ficheros
    • Punteros a funciones
    • Excepciones
    • Casting
    • Templates
    • Templated Containers
      • Iterators
      • std::vector
      • std::list
      • std::map
  • 🧠Pyhton
    • Sintaxis basica
    • Scripts
    • Tipos de datos
      • Listas
      • Set
      • Diccionarios
      • Generadores
    • Estructuras de control
      • Iterar con For
      • Iterar con zip
      • Iterar con enumerate
    • Map, Filter and Reduce
    • Funciones
    • Clases
      • Metodos
      • Herencia
    • Formateo con {} y format()
    • Decoradores
  • 📦JAVA
    • Conceptos basicos
    • Programacion estructurada
    • Clases predefinidas
    • POO
      • Clases
      • Herencia
      • Polimorfismo
      • Abstraccion
      • Encapsulacion
    • ArrayList
    • Excepciones
  • ⚒️HTML
    • HTML Basics
    • Elementos de bloque
      • Titulos y parrafos
      • Header, Main y Footer
      • Section, article y aside
    • Elementos en línea
    • Atributos
    • Enlaces <a>
    • Listas
    • Tablas
    • Formularios
      • Input
      • Select y datalist
      • GET y POST
    • Contenido embebido
      • Imagenes
      • Audio y video
      • Iframe
  • 🎨CSS
    • Introduccion
    • Selectores
    • Como funciona CSS
    • Box Model
    • Desbordamiento y Colapso de margenes
    • Display
    • Position
    • Medidas absolutas y relativas
  • 🟡JavaScript
    • Promesas
    • Async/Await
  • 📲Svelte
    • Componentes
    • Reactividad
    • Directivas
    • Eventos
  • 🖥️Sistemas
    • Particiones
  • 🕸️Redes
    • IP Adress
    • Subnet Mask
  • 🕷️Web Scrapping
    • Scrapy
      • Spiders
        • CrawlerSpider
      • Process data
      • Save data
        • CSV y JSON
        • SQLite
    • Splash
    • Selenium
Powered by GitBook
On this page
  • And (&)
  • OR ( | )
  • XOR (^)
  • NOT (~)
  • Operadores de desplazamientos
  1. C

Operadores de bits

Operando en binario

Los operadores bit a bit realizan operaciones AND bit a bit (&), OR exclusivo bit a bit (^) y OR inclusivo bit a bit (|)

Los operandos de los operadores bit a bit deben tener tipos enteros, pero sus tipos pueden ser diferentes. Estos operadores realizan las conversiones aritméticas habituales; el tipo del resultado es el tipo de los operandos después de la conversión.

And (&)

El operador AND bit a bit compara cada bit de su primer operando con el bit correspondiente de su segundo operando. Si ambos bits son 1, el bit del resultado correspondiente se establece en 1. De lo contrario, el bit del resultado correspondiente se establece en 0.

a AND b = c
0 and 0 = 0
0 and 1 = 0
1 and 0 = 0
1 and 1 = 1

Para que se entienda mejor lo que hace este operador:

int a, b, c;

c = a & b

0110-0011
1010-1001
---------
0010-0001

OR ( | )

El operador OR exclusivo bit a bit compara cada bit de su primer operando con el bit correspondiente de su segundo operando. Si un bit es 0 y el otro bit es 1, el bit del resultado correspondiente se establece en 1. De lo contrario, el bit del resultado correspondiente se establece en 0.

a OR b = c
0 or 0 = 0
0 or 1 = 1
1 or 0 = 1
1 or 1 = 1

XOR (^)

El operador OR exclusivo bit a bit compara cada bit de su primer operando con el bit correspondiente de su segundo operando. En el caso de que solo uno de los dos bits sea 1, el resultado sera 1. De no ser asi, sera 0

a XOR b = c
0 xor 0 = 0
0 xor 1 = 1
1 xor 0 = 1
1 xor 1 = 0

NOT (~)

El operador OR exclusivo bit a bit compara cada bit de su primer operando con el bit correspondiente de su segundo operando. Este operador especifica que el segundo operando tienes que ser distinto del primero.

NOT a = b
not 0 = 1
not 1 = 0

Operadores de desplazamientos

Los operadores de desplazamiento se utiliza para mover los bits hacia la izquierda << o hacia la derecha >>. Los bits de las esquinas cuando son desplazados hacia su esquina, se pierden y el nuevo espacio se rellena con un 0. Es decir si desplazamos una serie de bits hacia la derecha, el bit de la derecha del todo se perdera y el primer bit empezando por la izquierda sera un 0.

A la hora de utilizar la estos operadores hay que especificar cuantos cuntos bits quieres deslazar.

int a, b, c;

c = a << x;    //Desplazar los bits x veces hacia la izquierda
c <<= a;      //Desplazara los bits de c un bit hacia la izquierda y los guarda en a
c <<= 1:     //Deslaza los bits de c hacia laa izquierda y lo garda en c

Bibliografia

PreviousValgrindNextProcesos e Hilos

Last updated 2 years ago

🏛️
https://learn.microsoft.com/es-es/cpp/c-language/c-bitwise-operators?view=msvc-170
https://www.youtube.com/watch?v=jnpqz8EGOeE