Furriel Posted October 16, 2006 at 06:49 PM Report #57832 Posted October 16, 2006 at 06:49 PM Olá a todos, Tenho duas strings de números binários de 8 bits e quero fazer num1 AND num2. Estou a passar as variáveis para inteiras e depois faço a=num1 & num2; Mas não me está a dar, qual será o erro? Obrigado.
Gurzi Posted October 16, 2006 at 07:03 PM Report #57838 Posted October 16, 2006 at 07:03 PM o and é representado por dois &&
Furriel Posted October 16, 2006 at 07:13 PM Author Report #57843 Posted October 16, 2006 at 07:13 PM Já experimentei com && e também não deu. Diz que o operador não pode ser aplicado a String, String ou int, int.
Hipnoted Posted October 16, 2006 at 07:29 PM Report #57851 Posted October 16, 2006 at 07:29 PM 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"
Furriel Posted October 16, 2006 at 07:35 PM Author Report #57857 Posted October 16, 2006 at 07:35 PM Pois o que eu quero é algo do género: 01001010 AND 11111111 = 01001010
karva Posted October 16, 2006 at 07:38 PM Report #57861 Posted October 16, 2006 at 07:38 PM ah, tu queres e somar os valores_ Proud LEIC-A@IST student!
Hipnoted Posted October 16, 2006 at 07:40 PM Report #57862 Posted October 16, 2006 at 07:40 PM ah, tu queres e somar os valores_ Não tem nada a ver. Fazer o AND é uma operação lógica entre números binários. 1 AND 0 = 0 1 AND 1 = 1 0 AND 0 = 0 "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
Furriel Posted October 16, 2006 at 07:44 PM Author Report #57865 Posted October 16, 2006 at 07:44 PM ah, tu queres e somar os valores_ Não, isto não é somar... Somar seria: 01001010 + 11111111 = 101001001 Como podes ver é um pouco diferente.
Knitter Posted October 16, 2006 at 07:53 PM Report #57869 Posted October 16, 2006 at 07:53 PM 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?
Knitter Posted October 16, 2006 at 07:54 PM Report #57870 Posted October 16, 2006 at 07:54 PM Um "AND" é uma soma lógica, logo sim, é somar, mas um somar diferentes dos números decimais 👍
Knitter Posted October 16, 2006 at 07:55 PM Report #57872 Posted October 16, 2006 at 07:55 PM 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.
Gurzi Posted October 16, 2006 at 08:45 PM Report #57902 Posted October 16, 2006 at 08:45 PM Podem me explicar em que casos é que isto tem utilidade ?
Hipnoted Posted October 16, 2006 at 08:50 PM Report #57903 Posted October 16, 2006 at 08:50 PM 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, .... "Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"
Furriel Posted October 16, 2006 at 08:52 PM Author Report #57905 Posted October 16, 2006 at 08:52 PM 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?
Furriel Posted October 16, 2006 at 08:55 PM Author Report #57908 Posted October 16, 2006 at 08:55 PM 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.
Hipnoted Posted October 16, 2006 at 08:57 PM Report #57909 Posted October 16, 2006 at 08:57 PM 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"
Knitter Posted October 16, 2006 at 09:06 PM Report #57920 Posted October 16, 2006 at 09:06 PM 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...
Hipnoted Posted October 16, 2006 at 09:11 PM Report #57924 Posted October 16, 2006 at 09:11 PM 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"
Furriel Posted October 16, 2006 at 09:18 PM Author Report #57929 Posted October 16, 2006 at 09:18 PM 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 😉
Knitter Posted October 16, 2006 at 09:40 PM Report #57938 Posted October 16, 2006 at 09:40 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now