Hex ~ bin, talves ajude alguem :)

Como voces fazem para converter um hexadecimal??
eu aprendi um jeito facil de fazer isso…

exemplo:
0x8000000F

isso é um binário assim:

8 = 1000
0 = 0000
0 = 0000
0 = 0000
0 = 0000
0 = 0000
0 = 0000
F = 1111

-> 1000 0000 0000 0000 0000 0000 0000 1111

assim fica claro, pq 0x80000000 é o maior numero negativo possível pra um inteiro
e 0x7FFFFFFF é o maior positivo.

entao,
0x80 é o maior negtivo pra um byte
0x7F é o maior positivo pra um byte

outra forma de alcancar o maior positivo/negativo de um numero é
int x = 1;
x <<=31; // maior negativo
x = ~x; // maior positivo

Acho que vc quis dizer o menor numero inteiro negativo possivel. O maior inteiro negativo é -1. Enfim, acho que seria melhor dizer o menor inteiro possivel.

[quote=“maxguzenski”]
outra forma de alcancar o maior positivo/negativo de um numero é
int x = 1;
x <<=31; // maior negativo
x = ~x; // maior positivo[/quote]

Gostei dessa parte… :smiley:

Até mais.

tem razao… mas da pra entender :slight_smile:

comecei o curso de certificacao java essa semana agora.
to chorando pra aprender os operadores shift. eu entendi eles, mas tenho q estudar mais, pra ficar mais claro.

Estudar para certificação é bom para aprender melhor algumas coisas que às vezes não costumamos usar muito quando estamos programando no dia-a-dia, mas só pra dar uma dica, ninguém precisa ficar se matando de estudar operadores shift se for simplesmente pra passar na prova.
Normalmente, cai apenas uma questão, e bem simples. Basta decorar a reguinha do x / 2^n e x * 2^n

ola Bani

como que eu uso essa regra que vc disse?

tb estou com dificuldade de ver o operador shift

valeu

x / 2^n

Esse é o shift right. O n é de quanto vc está fazendo um shift right. Ou seja, cada vez que vc faz um shift right de 1, vc divide o numero por 2. Daí fazer

int num = 4 >> 1;

É o mesmo que fazer

int num = 4/(2^1);

E x * 2^n é o shift left. A diferença é que cada shift left funciona como uma multiplicação por 2. Acho que é valido conhecer o sistema binario para entender melhor como os operadores de shift funcionam. Eu li esse tutorial da sun para entender melhor: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/bitwise.html

Até mais.

É simples.
Lembrando que os operadores shifts atuam sobre a representação binária do número, quando você “empurra os bits” para a esquerda você está na verdade multiplicando o número por 2 elevado ao número de casas que você está empurrando, e quando é para a direita, você divide por 2 elevado ao número de casas.

Exemplo:
x >> 3 = x / 2³
x << 3 = x * 2³

Hummmm muito interessante essa “regrinha”!

Alguém aí tem algum exemplo prático de onde os shift’s são usados??

Eu imagino que uma utilidade para eles seja para a criação de algoritimos de criptografia… Alguém tem mais alguma outra sugestão?

[]'s
Tiago Serafim