elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  operardor >> en java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: operardor >> en java  (Leído 3,899 veces)
+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
operardor >> en java
« en: 11 Julio 2016, 03:11 am »

que clase de operador es este, desde cuando se implemento tal comando.

Código
  1. cuando uso n>>2 es igual n/2




En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: operardor >> en java
« Respuesta #1 en: 11 Julio 2016, 03:26 am »

Son operadores a nivel de bit

Ese es desplazamiento a la derecha

Tambien esta << que es desplazamiento a la Izquierda.

Vienen desde el lenguaje C, del cual java es primo en la mayoria de sintaxis y operadores

Por ejemplo si tienes un numero entero  255 en binario es

Código:
00000000000000000000000011111111

Si le aplicas

Código
  1. numero = numero>>1;

Quedaria

Código:
00000000000000000000000001111111

El cual es 128

Todos los bits recorren una posicion a la derecha lo cual es una division entre 2

Si quieres que todos los bits se recorran 4 posiciones solo haces

Código
  1. numero = numero>>4;

Pero segun tu >>2 es la división entre 2, lo cual no es correcto.

Mas info
https://es.wikipedia.org/wiki/Operador_a_nivel_de_bits

Saludos!


« Última modificación: 11 Julio 2016, 03:32 am por AlbertoBSD » En línea

+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
Re: operardor >> en java
« Respuesta #2 en: 13 Julio 2016, 17:57 pm »

gracias y estas en lo cierto, leere algo sobre esto se ve interesante, y me equivoke en el ejemplo, gracias
En línea

Octsam

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: operardor >> en java
« Respuesta #3 en: 19 Julio 2016, 10:43 am »


En Java hay 3 operadores de desplazamiento de bits:

   1) El operador <<, que desplaza todos los bits hacia la izquierda tantas posiciones como sea indicado, dejando a la derecha valores nulos. Los bits no nulos que no quepan serán perdidos, y si hay una conservación del signo, equivale a multiplicar por 2 elevado al número de bits desplazados. Es decir:

Código:
int n = 1 << 5

Equivale a hacer:

Código:
int n = 1*32

Porque 2^5 = 32. Pero:

Código:
int n = 1 << 31

Equivale a poner:

Código:
int n = Integer.MIN_VALUE

Número que es -2147483648, porque al ser 1 el bit de la posición 31 el número es negativo, y si todos los demás son nulos, es el entero menor de todos.
Las razones de éso no las daré aquí, sino que es suficiente con saber que si como consecuencia del desplazamiento, cambia el bit de la posición 31, siendo el primero el bit de la posición 0, el número cambiará de signo.

   2) El operador >>>, que desplaza todos los bits hacia la derecha tantas posiciones como sea indicado, dejando a la izquierda valores nulos. Los bits no nulos que no quepan serán perdidos, y si hay una conservación del signo, equivale a dividir por 2 elevado al número de bits desplazados. Si el número era negativo, este desplazamiento lo hará positivo, porque el bit de la posición 31 pasará de ser 1 a ser 0.

   3) El operador >>, que desplaza todos los bits menos el del signo hacia la derecha tantas posiciones como sea indicado, por lo que el número conservará su signo, algo que ninguno de los otros dos garantiza, por lo que siempre equivale a dividir por 2 elevado al número de bits desplazados.

El operador >> de C y C++, cumple la función que en Java cumple el operador >>>.

En línea

hectornunezrivas

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: operardor >> en java
« Respuesta #4 en: 25 Julio 2016, 19:35 pm »

Hola.
OPERADORES JAVA A NIVEL DE BITS

Realizan la manipulación de los bits de los datos con los que operan.

Los datos deben ser de tipo entero.

Los operadores a nivel de bits en java son:
&       and a nivel de bits
|        or a nivel de bits
^       xor a nivel de bits
<<     desplazamiento a la izquierda, rellenando con ceros a la derecha
>>   desplazamiento a la derecha, rellenando con el bit de signo por la izquierda
>>>    desplazamiento a la derecha rellenando con ceros por la izquierda

Saludos
En línea

+ 1 Oculto(s)

Desconectado Desconectado

Mensajes: 298


un defecto se puede convertir en una virtud


Ver Perfil WWW
Re: operardor >> en java
« Respuesta #5 en: 27 Julio 2016, 01:43 am »

en que casos usarlos ?
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: operardor >> en java
« Respuesta #6 en: 27 Julio 2016, 04:52 am »

el and se puede usar para enmascarar banderas, generalmente se usarian solo en entornos con muy poca memoria o recursos limitados.

Yo implemente mi propia version dw biginteger en C y abuse mucho del and y de las operaciones de recorrimiento de bits para hacer mas eficiente alguns operaciones.

Te voy a dejar aqui los links donde puse algunos ejemplos en C, pero igual aplicarían en java

Re: Optimizar tamaño de estructura de Datos

Números de longitud variable en C (Numeros muy grandes)
En este busca en la funcion add_numero


Saludos
« Última modificación: 27 Julio 2016, 05:02 am por AlbertoBSD » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines