Advertisement
RicardasSim

signed unsigned

Apr 1st, 2019
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.20 KB | None | 0 0
  1. //-std=c99 -Wall -Wextra -Wpedantic -Wshadow
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <stdint.h>
  6.  
  7. #include <inttypes.h>
  8.  
  9. void printBinaryLE(void *v, uint32_t s)
  10. {
  11.    
  12.     if(!v||s<1)
  13.     {
  14.         printf("error !\n");
  15.         return;
  16.     }
  17.    
  18.     uint8_t *pv = (uint8_t*) v;
  19.     uint32_t i;
  20.  
  21.     while(s--)
  22.     {
  23.         i=8;
  24.         while(i--)
  25.         {
  26.             printf("%d", pv[s] >> i & 1u ? 1 : 0);
  27.         }
  28.     }
  29.  
  30.     printf("\n");
  31. }
  32.  
  33. int main()
  34. {
  35.  
  36.     int8_t a = -1;
  37.     uint8_t b = 0xFF;
  38.     int32_t result;
  39.    
  40.     printf("a DEC: %d HEX: 0x%X BIN (little endian): ", a, a);
  41.     printBinaryLE(&a, sizeof(a));
  42.    
  43.     printf("%" PRIx8, a);
  44.     printf("\n");
  45.    
  46.     printf("0x%X\n", a & 0xFF);
  47.    
  48.     printf("b DEC: %d HEX: 0x%X BIN (little endian): ", b, b);
  49.     printBinaryLE(&b, sizeof(b));
  50.    
  51.     result = a + b;
  52.    
  53.     printf("%d + %d = %d\n", a, b, result);
  54.    
  55.     result = b + b;
  56.    
  57.     printf("%d + %d = %d\n", b, b, result);
  58.    
  59.     return 0;
  60. }
  61.  
  62. /*
  63. output:
  64.  
  65. a DEC: -1 HEX: 0xFFFFFFFF BIN (little endian): 11111111
  66. ffffffff
  67. 0xFF
  68. b DEC: 255 HEX: 0xFF BIN (little endian): 11111111
  69. -1 + 255 = 254
  70. 255 + 255 = 510
  71.  
  72. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement