ternary_arithmetic

Crates.ioternary_arithmetic
lib.rsternary_arithmetic
version0.1.6
created_at2025-08-01 09:56:21.796495+00
updated_at2025-10-20 07:50:44.765486+00
descriptionbalanced ternary use array logic gate to arithmetic
homepagehttps://github.com/10555gff/ternary_computer
repositoryhttps://github.com/10555gff/ternary_computer
max_upload_size
id1776391
size52,145
(10555gff)

documentation

README

Rust

Ternary Arithmetic

A Rust library use array logic gate to arithmetic. a numeral system with digits -1, 0, and +1.

Installation

Add this to your Cargo.toml:

cargo add ternary_arithmetic

Example

use ternary_arithmetic::ternary_io::Ternary;
use ternary_arithmetic::logical_calculate::Digit;
use ternary_arithmetic::dibit_logic::DibitLogic;

fn main() {
    let a:u8 = 0b10_10_10_10;
    let b:u8 = 0b00_00_00_00;
    let c:u8 = 0b01_01_01_01;
    let d:u8 = 0b10_00_01_00;
    
    //println!("d = {:08b}", d);
    let r =a.dibit_tand(d);
    let r1 =b.dibit_tand(d);
    let r2 =c.dibit_tand(d);
    r.digits_print_t();
    r1.digits_print_t();
    r2.digits_print_t();

    //1111_1111+1000_0000+0=1_T111_1111
    let a:u16 = 0b0101_0101_0101_0101;
    let b:u16 = 0b0100_0000_0000_0000;
    let r=a.dibit_adder(b, Digit::Z);
    println!("{:?}",r.0);
    r.1.digits_print_t();

    //TTT-TT=T101
    let a:u16 = 0b0000_0000_0010_1010;
    let b:u16 = 0b0000_0000_0000_0101;
    let r=a.dibit_sub(b, Digit::Z);
    println!("{:?}",r.0);
    r.1.digits_print_t();

    let a = Ternary::parse("+0-+-+");
    let b = Ternary::parse("+-+-+");
    let result=&a + &b;
    result.digits_print();

    let result=&a - &b;
    result.digits_print_t();

    let result=&a * &b;
    result.digits_print();

    let a = Ternary::parse("+-+-+-+-+++-+++-0++-000++--+-++-++-++++++++++++++-++++-+++--++++--0+++-++-+-++-++0+-0");
    let b = Ternary::parse("+-+-+-+-+++-+++-0++-000++--+-++-+0+-0");
    let c=&a / &b;
    println!("{}/{}={}",a.to_dec(),b.to_dec(),c.quotient.to_dec());
}


License

This project is licensed under the MIT License.

Commit count: 0

cargo fmt