Mais um blog inútil.

Janeiro 20, 2008

Conversor de Binário para Decimal

Arquivar em: Useless, coding — amg @ 21:34

O sadik pediu-me para não postar mais, mas vou postar…

Este é um programinha que fiz o ano passado em Programação (Pascal), era para se utilizar operações com strings mas utilizei o método (010 = 0 * 2 ^ 0 + 1 * 2 ^ 1 + 0 * 2 ^ 2 = 2)
O código é estranho, até usei uns ifs que não sei porquê, mas resolveram os problemas que tinha (caso o último número fosse 0 acrescentava um valor: 010 ficava 3, 0100 ficava 5, mas já 011 ficava 3 e 0101 ficava 5):

Program bin_dec;

function expoente(x,y:longint):longint;

var

z,n:longint;

begin

n := x;

for z := 2 to y do

n := n * x;

expoente := n;

end;

var

num, aux, multi, digito, valor, soma:longint;

exp:integer;

begin

write(’Num (bin): ‘);

readln(num);

multi := 10;

aux := num;

exp := 0;

soma := 0;

while (aux <> 0) do

begin

digito := aux mod 10;

aux := aux div 10;

multi := multi * 10;

if (exp = 0) and (digito = 1) then

begin

soma := 1;

exp := 1;

end

else

begin

valor := expoente(2,exp);

exp := exp + 1;

soma := soma + digito * valor;

end;

end;

writeln(num,’(bin) = ‘,soma,’(dec)’);

readln;

end.

Podem testar com o FPC.

EDIT: Coloquei blocos de identação para o código ficar mais bonito.

Janeiro 17, 2008

How to crack XChat 2.8.5e - Part I

Arquivar em: Cracking — falso @ 20:56

Já há não sei quantos dias que me andam a chatear para fazer um documento a explicar como se cracka o xcrap para Windows, hoje decidi começar então com esta saga… sim vai ser uma saga á-lá-gamito porque assim da mais visitas, faz o pessoal voltar cá pra ver a continuação! Here we go… (more…)

Janeiro 16, 2008

Foto do falfinho

Arquivar em: Useless — amg @ 17:30

Partilho convosco uma foto do falfo:

Janeiro 15, 2008

Multiplicação com FFT

Arquivar em: Uncategorized — dcoder @ 20:06

Contra toda a lógica, isto é possível. Isto é possível pelo teorema da convolução (uma vez que uma multiplicação também pode ser considerada uma convolução).

OK. Como é que isto se faz?

1 - Transformar os números a multiplicar num polinómio, escolhendo uma base apropriada (e.g. 10, 16, 2^32, etc).

2 - Calcular a DFT de ambos, através do uso de uma FFT. (Não é necessário ser estritamente a FFT, qualquer convolução em teoria dá.)

3 - Multiplicar ponto a ponto ao longo do array obtido (multiplicação diádica).

4 - Calcular a DFT inversa do resultado.

5 - Avaliar o polinómio para obter o número final.

Tanto passo para uma mísera multiplicação. Qual é a vantagem?

A vantagem reside no facto de uma FFT ter complexidade logarítmica O(N log N), assim como os outros passos. A multiplicação clássica tem complexidade O(log N^2), e outros métodos recursivos como Karatsuba ou Toom-Cook têm complexidades inferiores, mas nunca completamente logarítmicos (geralmente na forma O(log N^1+e), 1.4 < e < 2 aproximadamente).

Portanto este método é útil para multiplicar números gigantescos (para ai 10000+ bits), uma vez que a overhead só compensa a esse nível de grandeza.

Aqui está um exemplo de uma multiplicação recorrendo à FFT.

Janeiro 14, 2008

Yaourt 0.8.8-1

Arquivar em: Linux, Useless — amg @ 23:26

Só para dizer que o Yaourt (A Pacman frontend with more features like AUR support) 0.8.8 foi lançado com fix para o Pacman 3.1, que por terem alterado a estrutura de configuração, o yaourt ficou cheio de doenças. Mas agora já não tem doenças.

O meu primeiro post

Arquivar em: Useless — C-16 @ 17:57

Camaradinhas, ois. É a primeira vez que escrevo um post num blog por isso achei que devia blogar sobre isso. Ok ? Adeus.

Janeiro 13, 2008

GIMP

Arquivar em: Useless — amg @ 21:05

Ontem estava cheio de tédio, mas em vez de ir cortar os pulsos (porque não sou emo) abri o gimp e comecei a editar umas fotos com brushes sacadas do google, eis o resultado:

foto.jpg foto2.jpg fog.jpg

Eu gosto mais da última porque fico a parecer Thor, senhor do trovão.

Janeiro 12, 2008

Arch Linux com novo site e nova versão do pacman

Arquivar em: Linux — amg @ 18:40

Para quem não sabe, a comunidade Arch Linux promoveu há uns tempos atrás um concurso de logotipos (Ver)

Pois bem, o layout do site com o novo logotipo já está de pé.

Aproveito também para dizer que uma nova versão do Pacman está cá fora com umas modificações na estrutura da sua configuração, ficou uns dias no [testing] mas hoje foi movido para o [core].

http://www.archlinux.org

Código estranho II

Arquivar em: Uncategorized — dcoder @ 3:23

mov ecx, eax
mov eax, 0CCCCCCCDh
mul ecx
shr edx, 3

Em 1994, o Torbjorn Granlund e o Peter Montgomery (o mesmo gajo que inventou a multiplicação de Montgomery do outro post) publicaram um artigo que descrevia como dividir um inteiro N por uma constante d, sem utilizar divisões. A partir daí todos os compiladores que se prezem passaram a usar este tipo de técnicas, e podemos ver no artigo como e’ feito.

a) Calcular a recíproca da divisão (arredondada) - f = 2^r / d => r = W+floor(log2(d) )

b) Multiplicar por f

c) dividir por 2^log2(d)

Assim, no caso acima, temos uma divisão por 10. f = Round(2^32+3/10) = 0xCCCCCCCD

Floor(Log2(10)) = 3;

Infelizmente, devido à perda de precisão não podemos recuperar facilmente as constantes a serem usadas como divisor. No entanto, é fácil criar uma tabela com a maioria das recíprocas e dos factores de escala usados e assim poupar tempo a olhar para contas.

Quem estiver interessado veja isto.

Janeiro 11, 2008

AIX é para quem ama UNIX - parte i

Arquivar em: lulz — mirage @ 22:07

Por iniciativa do Dcoder, tomei como desafio a instalação do AIX 1.3, a única versão de AIX que corre em x86 — mais exactamente, em IBM PS/2 e compatíveis. Para terem ideia, isto saiu em 1988 e teve o último update em 1992. Não há máquina virtual que corra isto (testei em Virtual PC 2004 e 2007, VMware, qemu, bochs, virtualbox…). Teimoso como sou, tirei o fiel P133 de debaixo da cama (apesar de o AIX 1.3 ser para 386 e 486) e vá de o martelar até isto funcionar. Com 32MB RAM, disco IDE de 6GB e placa gráfica Cirrus Logic ISA, rezei para que não houvesse complicações de maior.

Três disquetes depois, lá consigo passar do sítio onde o Virtual PC chegava, e apresenta-me algumas definições que ficam gravadas directamente na NVRAM, como o nome da máquina (usei o default, aixps2), o país, fuso horário e o teclado (nota para os BSDfags: já em 1988 isto suportava teclado português). Depois temos uma espécie de partitioner que apenas permite remover partições “desconhecidas”, ie, qualquer coisa que não seja AIX nem MSDOS (sim, isto tem pacotes para interagir com MSDOS). Limpando aquelas partições de Linux, avança para a fase seguinte: verificar bad blocks no disco rígido.

aix_proof.jpg

(more…)

« Older Entries
Newer Entries »

Made on a Mac Powered by OpenBSD