Gostaria de saber se alguém me dá uma luz, queria saber qual assunto eu devo procurar na internet ou livros para aprender a manipular (ler, modificar e gravar novamente) os dados de um arquivo(em código de máquina). É que eu consegui fazer um algoritmo para um compactador que reduz um código de máquina (zeros e uns) em até a metade do tamanho, e pelo que vi os compactadores atuais não chegam nem a 20% menor, e até dá pra reduzir bem mais é que eu só cheguei em um algoritmo eficaz agora e tenho que fazer testes. Mas pra fazer esses testes eu preciso saber manipular os bits, transforma-los em inteiros, fazer alguns cálculos e transformá-los em bits novamente para guarda-lo compactado. Mas eu nem sei o que estudar para conseguir isso. Alguém pode me ajudar? Eu tenho o algoritmo mas não sei utilizar a linguagem de programação para implementar meus cálculos e gravar os dados novamente compactados.
Primeiro, imagine que vc ja leu o arquivo e vc carregou os bytes em memoria
Ai aprenda a fazer operações bit-a-bit ( bitwise ). Em C por exemplo:
http://www.cprogramming.com/tutorial/bitwise_operators.html
quando vc dominar isso, estude as APIs de acesso a arquivo. POSIX por exemplo, presente em muitos sistemas como MacOS e Linux, vc pode ler através da instrução sysread ( e tem um syswrite ) e vc pode controlar a quantidade de bytes que vc pode ler.
vc pode ler atraves da api bufferizada com fread ( e tem um fwrite )
http://www.cplusplus.com/reference/cstdio/fread/
mas acredite, se vc não conseguir manipular os bits em memoria, nao vai ser lendo de um arquivo que vc vai conseguir. baby steps.