Jump to content

Operação lógica em Java


Furriel

Recommended Posts

o and é representado por dois &&

Isso não tem nada a ver. O && é usado para condições, o que o Furriel quer é uma operação lógica com dois números binários. Por acaso em C nunca fiz isso, não faço a mínima como se faz...

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Primeiro tu tens os valores em caracteres, nunca os podes somar sem antes converter e como o java te disse e muito bem, não podes aplicar esse operador lógico a String. Não faz sentido.

Se eu pegar nas tuas duas Strings  e aplicar o "AND" o que estou a fazer é agarrar nos bits que representam a tua String e soma-los, isto de forma simples:

String zero = "0";

String um = "1";

String andLogico = zero & um;

O que as linhas acima fazem é pegar no valor binário do caracter "0", que em ASCII é 48 ou 110000 em binário, e agarrar no valor binário de "1", que é qualquer coisa como 110001, e fazer um AND lógico, não é o mesmo que fazer um AND à sua representação, o  "0" e "1" que as Strings representam. Isto não se pode fazer, nem faz muito sentido, pelo menos em java desta forma não é possível.

Posso ter percebido mal o que queres fazer mas do que percebi não estás a tentar fazer as coisas correctas. Porque é que tens a representação do binário em String?

Link to comment
Share on other sites

O "AND" é uma operação lógica que só pode ser aplicada a binários. Se o aplicares a números inteiros, por exemplo, o java aplica a operação à sua representação binária. Mas isso nas Strings não faz sentido.

Pois, tens razão, vou definir as variáveis como binários.

Já agora sabes qual é o tipo de uma variável Binária?

Link to comment
Share on other sites

Podem me explicar em que casos é que isto tem utilidade ?

Tudo o que envolva electrónica... Circuitos lógicos, portas lógicas...

Também há o OR, XOR, NOR, ....

No meu caso tenho que fazer um trabalho para a faculdade sobre IP´s e tenho que, dado um IP e uma Máscara, determinar a rede, subrede, host.

Para isso preciso de trabalhar com os binários.

Link to comment
Share on other sites

No meu caso tenho que fazer um trabalho para a faculdade sobre IP´s e tenho que, dado um IP e uma Máscara, determinar a rede, subrede, host.

Para isso preciso de trabalhar com os binários.

Eu lembro-me dessa cena, o ano passado também dei isso. É um pouco confuso, mas é fácil...

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Pois mas eu não conheço linguagem alguma com um tipo de dados binário, sorry, simplesmente nunca usei, o Java não tem, outra linguagem não sei...

Eu o ano passado fiz uma coisa parecida em Assembly.

Mas para que queres um programa disso Furriel? Esses cálculos são fáceis de fazer...

"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Link to comment
Share on other sites

Eu o ano passado fiz uma coisa parecida em Assembly.

Mas para que queres um programa disso Furriel? Esses cálculos são fáceis de fazer...

Eu tenho que determinar a rede do IP com a Máscara introduzida e para isso passei o IP e a Máscara para Binário e agora é só fazer a "soma" lógica dos dois valores.

Pelo menos foi a forma mais simples que arranjei, mas se conseguiste fazer de outra maneira partilha 😉

Link to comment
Share on other sites

Pois o problema é que não passaste para binário mas sim para String o que não é bem a mesma coisa....

Podes simplesmente comparar bit a bit os octectos, tipo se tiveres o IP: 192.168.234.23 com a MASK: 255.255.255.0 basta que verifiques 192 & 255; 168 & 255; 234 & 255; 23 & 0. Não precisas de ter em String, não podes ter em String aliás.

Penso que assim funciona, mas estou a fazer de cabeça e já não tenho redes à 3 anos... mas a ideia é mesmo fazeres comparação lógica dos octetos.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.