C_far icon

Some macros 16, 8 and 4 bits

C_far | PRO | 10/22/18 03:03:52 PM UTC | 0 ⭐ | 7735 👁️ | Never ⏰ | []
Pawn |

3.68 KB

|

None

|

0 👍

/

0 👎

#pragma compat 1
 
#include <a_samp>
 
#define d16b%0<%1,%2> new %0 = (%2 << 32) | (%1 << 16)
#define a16b(%1,%2) (%2 << 32) | (%1 << 16)
#define g16b(%0,%1) ((%0 >>> (16 << %1)) & 0xFFFF)
#define s16b(%0,%1,%2) %0 = (((0xFFFF0000 >>> (16*_:(!%1))) & %0) | (%2 << (16*_:(!%1))))
 
#define d8b%0<%1,%2,%3,%4> new %0 = (%4 << 24) | (%3 << 16) | (%2 << 8) | (%1)
#define a8b(%1,%2,%3,%4) (%4 << 24) | (%3 << 16) | (%2 << 8) | (%1)
#define g8b(%0,%1) ((%0 >>> (%1 << 3)) & 0xFF)
#define s8b(%0,%1,%2) %0 = (%0 & ~(0xFF << %1 * 8)) | (%2 << %1 * 8)
 
#define d4b%0<%1,%2,%3,%4,%5,%6,%7,%8> new %0 = (%8 << 28) | (%7 << 24) | (%6 << 20) | (%5 << 16) | (%4 << 12) | (%3 << 8) | (%2 << 4) | (%1)
#define a4b(%1,%2,%3,%4,%5,%6,%7,%8) (%8 << 28) | (%7 << 24) | (%6 << 20) | (%5 << 16) | (%4 << 12) | (%3 << 8) | (%2 << 4) | (%1)
#define g4b(%0,%1) ((%0 >>> (%1 << 2)) & 0xF)
#define s4b(%0,%1,%2) %0 = (%0 & ~(0xF << %1 * 4)) | (%2 << %1 * 4)
 
main() {
    {   // 16 bits
        print("-------------------");
        print("----- 16 bits -----");
        print("-------------------");
 
        d16b int<52410, 124>;
 
        printf("int = %032b", int);
        printf("int = %08x", int);
        printf("int = %d", int);
 
        print(" ");
 
        printf("int{0} = %d", g16b(int, 0));
        printf("int{1} = %d", g16b(int, 1));
 
        s16b(int, 0, 1742);
 
        print(" ");
 
        printf("int = 0b%032b", int);
        printf("int = 0x%08x", int);
        printf("int = %d", int);
        printf("int = 0b%032b", a16b(1742, 124));
        printf("int = 0x%08x", a16b(1742, 124));
        printf("int = %d", a16b(1742, 124));
 
        print(" ");
 
        printf("int{0} = %d", g16b(int, 0));
        printf("int{1} = %d", g16b(int, 1));
    }
 
    {   // 8 bits
        print("-------------------");
        print("----- 08 bits -----");
        print("-------------------");
 
        d8b int<152, 255, 5, 42>;
 
        printf("int = 0b%032b", int);
        printf("int = 0x%08x", int);
        printf("int = %d", int);
 
        print(" ");
 
        printf("int{0} = %d", g8b(int, 0));
        printf("int{1} = %d", g8b(int, 1));
        printf("int{2} = %d", g8b(int, 2));
        printf("int{3} = %d", g8b(int, 3));
 
        s8b(int, 2, 233);
 
        print(" ");
 
        printf("int = 0b%032b", int);
        printf("int = 0x%08x", int);
        printf("int = %d", int);
        printf("int = 0b%032b", a8b(152, 255, 233, 42));
        printf("int = 0x%08x", a8b(152, 255, 233, 42));
        printf("int = %d", a8b(152, 255, 233, 42));
 
        print(" ");
 
        printf("int{0} = %d", g8b(int, 0));
        printf("int{1} = %d", g8b(int, 1));
        printf("int{2} = %d", g8b(int, 2));
        printf("int{3} = %d", g8b(int, 3));
    }
 
    {   // 4 bits
        print("-------------------");
        print("----- 04 bits -----");
        print("-------------------");
 
        d4b int<15, 14, 13, 12, 2, 5, 3, 4>;
 
        printf("int = 0b%032b", int);
        printf("int = 0x%08x", int);
        printf("int = %d", int);
 
        print(" ");
 
        printf("int{0} = %d", g4b(int, 0));
        printf("int{1} = %d", g4b(int, 1));
        printf("int{2} = %d", g4b(int, 2));
        printf("int{3} = %d", g4b(int, 3));
        printf("int{3} = %d", g4b(int, 4));
        printf("int{3} = %d", g4b(int, 5));
        printf("int{3} = %d", g4b(int, 6));
        printf("int{3} = %d", g4b(int, 7));
 
        s8b(int, 6, 9);
 
        print(" ");
 
        printf("int = 0b%032b", int);
        printf("int = 0x%08x", int);
        printf("int = %d", int);
        printf("int = 0b%032b", a4b(15, 14, 13, 12, 2, 5, 9, 4));
        printf("int = 0x%08x", a4b(15, 14, 13, 12, 2, 5, 9, 4));
        printf("int = %d", a4b(15, 14, 13, 12, 2, 5, 9, 4));
 
        print(" ");
 
        printf("int{0} = %d", g4b(int, 0));
        printf("int{1} = %d", g4b(int, 1));
        printf("int{2} = %d", g4b(int, 2));
        printf("int{3} = %d", g4b(int, 3));
        printf("int{3} = %d", g4b(int, 4));
        printf("int{3} = %d", g4b(int, 5));
        printf("int{3} = %d", g4b(int, 6));
        printf("int{3} = %d", g4b(int, 7));
    }
}

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎