Skip to content

v1.0.0

Latest

Choose a tag to compare

@netoe1 netoe1 released this 30 Jul 02:24
· 2 commits to main since this release

🧱 cbits v1.0.0

Versão estável da biblioteca cbits, escrita em C puro, voltada para manipulação binária de baixo nível, lógica digital e testes didáticos. Modular, simples e ideal para aprendizado ou integração com sistemas maiores.


✨ Novidades

  • ✅ Operações lógicas básicas:
    • bit_and, bit_or, bit_xor, bit_not
    • bit_nand, bit_nor, bit_xnor
  • ✅ Tipo abstrato Bit (valores HIGH, LOW)
  • ✅ Arquitetura modular com separação clara:
    • operations.c para operações bit a bit
    • gates.c para portas lógicas compostas
  • ✅ Arquivo objeto único cbits.o gerado a partir dos múltiplos arquivos fonte para facilitar linkagem
  • ✅ Exemplo de uso incluso em examples/main.c

🛠 Estrutura do Projeto

cbits/
├── include/ # Headers públicos (cbits.h)
├── src/ # Implementação (operations.c, gates.c, main.c)
├── examples/ # Exemplos de uso
└── LICENSE # Apache License 2.0


🚀 Como compilar

Compile os arquivos .c em um único arquivo objeto cbits.o com:

gcc -c src/operations.c src/gates.c -o cbits.o

Ou compile separadamente e crie uma biblioteca estática (opcional):

gcc -c src/operations.c -o operations.o
gcc -c src/gates.c -o gates.o
ar rcs libcbits.a operations.o gates.o

Para compilar seu programa usando o arquivo objeto único:

gcc examples/main.c cbits.o -o main

Ou usando a biblioteca estática:

gcc examples/main.c -L. -lcbits -o main

Makefile

Você pode usar o makefile, digitando make all e copiando libbits.a!

🧑‍💻 Como usar no código

Inclua o header cbits.h:

#include "cbits.h"

int main() {
    Bit a = HIGH;
    Bit b = LOW;
    Bit res = bit_and(a, b);
    return 0;
}

As funções implementadas em cbits.o (ou na biblioteca estática) serão linkadas no momento da compilação.

⚠️ Limitações conhecidas

  • Ainda sem testes unitários automatizados
  • Sem verificação de erros para tamanhos incorretos em arrays de bits
  • Não há suporte para manipulação dinâmica de bits (alocação, expansão)

📜 Licença

  • Este projeto é licenciado sob a Apache License 2.0.
  • Você pode usar livremente para fins pessoais, acadêmicos ou comerciais com a devida atribuição.

👤 Autor

📅 Lançamento

  • 30 de julho de 2025

Full Changelog: https://github.com/netoe1/cbits/commits/v1.0.0