Have ideas to improve npm?Join in the discussion! »

    trit-shift

    1.0.1 • Public • Published

    trit-shift

    Trit shifting operations

    Usage:

    var shl = require('trit-shift').shl;
    var shr = require('trit-shift').shr;
    
    // shift left
    shl(input, carryIn);
    shl(1, 0);  // 1 ('01') -> 3 ('10'), shift in zero from left
    shl(1, -1); // 1 ('01') -> 2 ('1i'), shift in negative from left
    
    // shift right
    shr(input, width, carryIn);
    shr(3, 5, 0); // 3 ('10') -> 1 ('01'), shifted right
    

    Balanced ternary base 3 trit shifting, analogous to base 2 bit shifting operations. See also balanced-ternary.

    Both shift left and shift right take a required parameter for the trit to shift in (carryIn); zero is not assumed since shifting in -1 or +1 may be desired (for example, for tritmasks). Shifting left is equivalent to multiplication by three, plus the carry:

    shl(x, 0);  // x * 3
    shl(x, 1);  // x * 3 + 1
    shl(x, -1); // x * 3 - 1
    

    Shifting right is equivalent to division by three, rounded to the nearest integer, plus the carry input trit at the most-significant trit position (which is why the width parameter is required, set to number of trits in the input value).

    shr(x, N, 0);   // Math.round(x / 3)
    

    Used to simulate ternary shift registers. The shifted-out value is not returned but can be computed separately using lst for shr, and trit-getset at the most significant trit for shl.

    Install

    npm i trit-shift

    DownloadsWeekly Downloads

    3

    Version

    1.0.1

    License

    none

    Last publish

    Collaborators

    • avatar