duda con operador binario &

Category: General 10 years ago
Espero me puedan ayudar a con una condicion que encontre que utiliza este operador &, lo que ocurre es que no entiendo bien que se intenta hacer con esta condicion. Se trata de la comparacon de un campo de tipo int de la siguiente manera:

campo & 32768 > 0

alguna idea de que se pueda pretender filtrar con esto?

saludos
Like it on Facebook, +1 on Google, Tweet it or share this topic on other bookmarking websites.
  • Re: duda con operador binario &

    by » 10 years ago


    A lo mejor este ejemplo te ayuda.

    3 & 5

    00000011
    00000101
    -----------
    00000001
    Si te fijas evalua en forma binaria dos números y te da el resultado.

    Saludos

  • Re: duda con operador binario &

    by » 10 years ago


    ok, muchas gracias, solo una pregunta mas, que ventaja podria tener validar de esta forma
    campo & 32768 > 0
    a validar de esta manera
    campo >= 32768
    por que segun como lo veo ambas condiciones serian lo mismo verdad?

  • Re: duda con operador binario &

    by » 10 years ago


    En realidad la funcionalidad que te da una comparación bit a bit tiene otro objetivo. Por ejmplo, supongamos que quieres almacenar la informacion de personas y saber si tienen algun número telefonico, una forma sería tener dos columnas una para el telefono de casa y otra para el teléfono de oficina, pero que pasaría si después requieres guardar más teléfonos, tendrías que aumentar columnas. Otra forma de guardar esta información sería en bits, por ejemplo 1=casa, 2=oficina, 3=celular y cada bit en 1 sería que si tiene. De esa manera solo necesitas una columna para guardar la información.

    Por ejemplo:

    1=001=Casa
    2=010=Oficina
    4=100=Celular

    Ahora cuando quieras saber simplemente usas el comparador bit a bit e igualas.

    Si lo ejecutamos con 5 nos va a decir que tiene Casa y celular

    [quote]DECLARE @home bit,
    @columna int

    SET @columna = 5

    IF ((1 & @columna) = 1) PRINT 'Casa'
    IF ((2 & @columna) = 2) PRINT 'Oficina'
    IF ((4 & @columna) = 4) PRINT 'Celular'

    -------------------------------------------
    Casa
    Celular[/quote]

    @columna-->Resultado
    1-->Casa
    2-->Oficina
    3-->Casa, Oficina
    4-->Celular
    5-->Casa, Celular
    6-->Oficina, Celular
    7-->Casa, Oficina, Celular


    Espero que con esto, entiendas un poco mejor uno de sus posibles usos. En tu ejemplo campo & 32768 > 0, me hace pensar que quieren saber si el valor campo tiene registrado algo solamente, en nuestro casa si tiene algún numero telefónico sin importar de que tipo.

    Saludos

  • Re: duda con operador binario &

    by » 10 years ago


    Muchas gracias!! efectivamente se esta almacenadno estados, lo que no esta claro es que es lo que se petende con la validaci´´on, pero eso ya tiene que ver con una regla de negocio.
    nuevamente muchas gracias

You do not have permissions to reply to this topic.
Powered by CjForum