Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define HEX_SIZE 9
- #define OCT_SIZE 12
- #define SIZE 12
- #define DATA_SIZE 3
- char display[SIZE + 1];
- int data[DATA_SIZE]; // 16 bit use only 12
- int i, j, k;
- void clear_display() {
- for (i = 0; i < SIZE; display[i++] = '0');
- }
- void plus() {
- for (i = 2; i > -1 && (i == 2 || !data[i + 1]); i--)
- data[i] = (data[i] + 1) & 0xFFF;
- }
- void minus() {
- for (i = 2; i > -1 && (i == 2 || data[i + 1] == 0xFFF); i--)
- data[i] = (data[i] - 1) & 0xFFF;
- }
- void cast_to_oct() {
- for (i = 0, j = 0; i < OCT_SIZE; i++, j = i / 4, k = (3 - (i % 4)) * 3)
- display[i] = ((data[j] & (0x7 << k)) >> k) + '0';
- }
- void cast_to_hex() {
- for (i = 0, j = 0; i < HEX_SIZE; j = ++i / 3, k = (2 - (i % 3)) * 4)
- display[i + 3] += (display[i + 3] = ((data[j] & (0xF << k)) >> k)) > 9 ? 'A' - 10 : '0';
- }
- int main() {
- data[2] = 2045;
- clear_display();
- // print binary
- for (i = 0; i < 3; i++)
- for (j = 11; j > -1; j--)
- printf("%d", (data[i] & (1 << j)) >> j);
- printf("\n");
- // print binary
- cast_to_hex();
- printf("HEX:%s\n", display);
- cast_to_oct();
- printf("OCT:%s\n", display);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement