22 February 2017 in C tagged bit fields by Tux
The following two examples demonstrate the use of bit fields
to reduce memory consumption of certain applications.
In the first example we create a compressed ‘bit’ struct and on the second we create a weird struct representation for bytes to show that the size of that struct is significantly less that the original one.
bits_bit_fields.c (compressed) (265 downloads)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
|
bits_bit_fields.c (compressed) (265 downloads)
Memory size occupied by 'bit' struct : 1 bytes Memory size occupied by 'bit_bit_field' struct : 1 bytes Memory size occupied by 'bits' array : 8 bytes Memory size occupied by 'bits_bit_field' array : 8 bytes Input Value: 0 00000000 00000000 Input Value: 1 10101010 10101010 Input Value: 2 20202020 00000000 Input Value: 3 30303030 10101010
bytes_bit_fields.c (compressed) (262 downloads)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
|
bytes_bit_fields.c (compressed) (262 downloads)
Memory size occupied by 'byte' struct : 8 bytes Memory size occupied by 'byte_bit_field' struct : 1 bytes Memory size occupied by 'bytes' array : 64 bytes Memory size occupied by 'bytes_bit_field' array : 8 bytes Input Value: 0 0 0 0 0 0 0 0 0 000 000 000 000 000 000 000 000 Input Value: 1 1 0 1 0 1 0 1 0 010 000 010 000 010 000 010 000 Input Value: 2 2 0 2 0 2 0 2 0 000 000 000 000 000 000 000 000 Input Value: 3 3 0 3 0 3 0 3 0 010 000 010 000 010 000 010 000
9 December 2016
In "C"
The following code will split a buffer in C to a list of segments. The size of the segments does not have to be a multiple of a byte. User defines the size of the segments in bits when calling node_t *segment(const unsigned char buffer[], const unsigned int buffer_bytes_size, const…
18 March 2016
In "C"
The following code will read a byte from position 0x10, of the register at 0x3f of the device /dev/i2c-2. To compile this code, you need the helper library i2c-dev.h which can be found in the download package here: main.c linux/i2c-dev.h
12 March 2017
In "C"
This post is also available in: Greek
This site uses Akismet to reduce spam. Learn how your comment data is processed.
2017 address applications audio awk bash C++ CentOS crystalxp crystalxp.net cut cyprus extract fedora ffmpeg find git GNU/Linux google grep hash hash code howtos ieee ieeextreme Informatics java Latex limassol linux map mysql nicosia Olympiad programming server ssh telephone telephone number tux tux.crystalxp.net ubuntu video wifi wordpress