BitJoy
Bit, Bytes and Logical Gates Abstraction.
About
Repository to 'Padrões de Projeto' subject at university. A height level Bit/Bytes and logical circuits abstractions.
Also Udacity Machine Learning Engineer Nanodegre program to add these package to PyPi.
Usage
Installing
pip install bitjoy
Starting with Bit
Importing and instantiating Bit class.
from bitjoy.dtypes import Bit
zero = Bit(0)
# ZeroBit(0)
one = Bit(1)
# OneBit(1)
Creating a bit passing 0 in the __init__ method, it will create another class: ZeroBit. The same away, passing 1, it will create a OneBit.
Logical Gates
There is also support to logical operators (called logical gates or logical circuits).
from bitjoy.dtypes import LogicalOperator
- NOT
LogicalOperator.not_(zero)
# OneBit(1)
LogicalOperator.not_(one)
# OneBit(0)
- OR
LogicalOperator.or_(zero, zero)
# ZeroBit(0)
LogicalOperator.or_(zero, one)
# OneBit(1)
LogicalOperator.or_(one, zero)
# OneBit(1)
LogicalOperator.or_(one, one)
# OneBit(1)
- AND
LogicalOperator.and_(zero, zero)
# ZeroBit(0)
LogicalOperator.and_(zero, one)
# ZeroBit(0)
LogicalOperator.and_(one, zero)
# ZeroBit(0)
LogicalOperator.and_(one, one)
# OneBit(1)
There is also support to others Logical Gates:
nor_, nand_, xor_andxnor_`
Bytes
There is also a Bytes class.
from bitjoy.dtypes import Bytes
Passing a list of Bit to the Bytes' constructor to creating a bytes instance. NOTE that bytes only have 8 bits. So passing more or less it'll throw an error.
bits = [Bit(0), Bit(0), Bit(0), Bit(0), Bit(1), Bit(1), Bit(0), Bit(0)]
b = Bytes(bits)
# Bytes(0, 0, 0, 0, 1, 1, 0, 0)
To creating a easy bytes, use int_to_bytes function from utils to help.
from bitjoy.utils import int_to_bytes
b1 = int_to_bytes(10)
# Bytes(0, 0, 0, 0, 1, 0, 1, 0)
b2 = int_to_bytes(175)
# Bytes(1, 0, 1, 0, 1, 1, 1, 1)
- Adding Bytes
Bytes class also has support to
+operand with__add__method.
b1_b2 = b1 + b2
# Bytes(1, 0, 1, 1, 1, 0, 0, 1)
- Casting
Bytes supports casting with other number types:
int,bin,octandhex.
int(b1_b2)
# 185
bin(b1_b2)
# '0b10111001'
oct(b1_b2)
# '0o271'
hex(b1_b2)
# '0xb9'
Adders
For arithmetic operators, the class Adder has two method to make additions:
half: to half-adder
full: to full-adder
Metadata
Release files for bitjoy 1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bitjoy-1.1b.tar.gz | 4.4 kB | Details |
Release files / bitjoy-1.1b.tar.gz
| Download URL | bitjoy-1.1b.tar.gz |
|---|---|
| Size | 4.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
16a71f552c20ed4ccb3b5ffca9b486c284e30e73247b492bad2ae3e78decdae3
|
|
BLAKE2b-256 checksum How to use checksums |
1645428a20fed4e40995e40fbb9105268d9ed250b121cc227ab8685e59ffc989
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0.post20200127 requests-toolbelt/0.9.1 tqdm/4.42.1 CPython/3.7.6
|