paribe
Maio 31, 2006, 10:17am
#1
Olá pessoal,
uma duvida como fazer pra ler de volta e saber qual o dia da
semana …
Pois me passaram o seguinte :
0000 0001(base 2) : domingo (1 base 10)
0000 0010(base 2) : segunda-feira (2 base 10)
0000 0100(base 2) : terça-feira (4 base 10)
0000 1000(base 2) : quarta-feira (8 base 10)
0001 0000(base 2) : quinta-feira (16 base 10)
0010 0000(base 2) : sexta-feira (32 base 10)
0100 0000(base 2) : sábado (64 base 10)
1000 0000(base 2) : não utilizado sempre será zero
Quando gravo no banco na base 10 por exemplo a tela
escolhi sexta e sabado :
somo os dois campos que dá 96 e gravo no banco …até aqui beleza
se for ler esse registro como 96 como vou saber se é sexta e sabado
Essa é minha duvida se alguém puder me ajudar agradeceria …
abs
Acho que você vai ter que primeiramente fazer todas as combinações possíveis e, a partir dos números que resultarem, você tem como relacionar.
Por exemplo, você já sabe que fazendo sexta e sábado vai dar 96, então você faz as contas pra achar o resultado de domingo e segunda, domingo e terça, domingo e quarta, e assim sucessivamente para todas as possibilidades.
Acredito então que você tenha que fazer aquela tabela da verdade com os dias da semana usando operação “&”.
Que tal assim :
[code]public class Binario{
public static void main(String [] args){
String [] days = {"dom","seg","ter","qua","qui","sex","sab"};
int [] bits = { 0x1, 0x10, 0x100, 0x1000, 0x10000,0x100000, 0x1000000};
int data = 0x0010010; // seg e qui
for(int i=0;i<bits.length;i++)
if((data & bits[i]) == bits[i]) // and bit-a-bit
System.out.println("Bit " + days[i] + " Ativo!");
}
}[/code]
Estude as operações bit a bit
Só fazendo uma correção:
int [] bits = { 0x1, 0x2, 0x4, 0x8, 0x10,0x20, 0x40};
cara, com a tua correção só consigo perceber o bit de quinta feira
Mais uma correção
int data = 0x02 | 0x10; // segunda e quinta
Note que 0x é para representar números hexadecimais (base 16), não números binários.