Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.13 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. #define HEX_SIZE 9
  4. #define OCT_SIZE 12
  5. #define SIZE 12
  6. #define DATA_SIZE 3
  7.  
  8. char display[SIZE + 1];
  9. int data[DATA_SIZE]; // 16 bit use only 12
  10. int i, j, k;
  11.  
  12. void clear_display() {
  13.     for (i = 0; i < SIZE; display[i++] = '0');
  14. }
  15.  
  16. void plus() {
  17.     for (i = 2; i > -1 && (i == 2 || !data[i + 1]); i--)
  18.         data[i] = (data[i] + 1) & 0xFFF;
  19. }
  20.  
  21. void minus() {
  22.     for (i = 2; i > -1 && (i == 2 || data[i + 1] == 0xFFF); i--)
  23.         data[i] = (data[i] - 1) & 0xFFF;
  24. }
  25.  
  26. void cast_to_oct() {
  27.     for (i = 0, j = 0; i < OCT_SIZE; i++, j = i / 4, k = (3 - (i % 4)) * 3)
  28.         display[i] = ((data[j] & (0x7 << k)) >> k) + '0';
  29. }
  30.  
  31. void cast_to_hex() {
  32.     for (i = 0, j = 0; i < HEX_SIZE; j = ++i / 3, k = (2 - (i % 3)) * 4)
  33.         display[i + 3] += (display[i + 3] = ((data[j] & (0xF << k)) >> k)) > 9 ? 'A' - 10 : '0';
  34. }
  35.  
  36. int main() {
  37.     data[2] = 2045;
  38.     clear_display();
  39.  
  40.     // print binary
  41.     for (i = 0; i < 3; i++)
  42.         for (j = 11; j > -1; j--)
  43.             printf("%d", (data[i] & (1 << j)) >> j);
  44.     printf("\n");
  45.     // print binary
  46.  
  47.     cast_to_hex();
  48.     printf("HEX:%s\n", display);
  49.     cast_to_oct();
  50.     printf("OCT:%s\n", display);
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement