void set_bit(unsigned char *bit_array, char bit_position, char new_state) { if(new_state) bit_array[bit_position >> 3] |= ( 1 << (bit_position & 7) ); else bit_array[bit_position >> 3] &= ~(1 << (bit_position & 7)); }
By Michael Rigby Jones
By butchering the routine a bit to make it less general i.e. removing the bit_array pointer and by breaking down the maths into separate chunks I managed to get this down to 38 words, at the cost of a couple of temp variables.void set_bit(unsigned char bit_position, unsigned char new_state) { unsigned char bitmask; unsigned char byteptr; byteptr = bit_position >> 3; bitmask = 1 << (bit_position & 7); if(new_state) { bitarray[byteptr] |= bitmask; } else { bitarray[byteptr] &= ~bitmask; } }
file: /Techref/microchip/language/C/math/setbitx.htm, 1KB, , updated: 2000/7/18 14:47, local time: 2024/11/5 11:47,
3.144.17.193:LOG IN ©2024 PLEASE DON'T RIP! THIS SITE CLOSES OCT 28, 2024 SO LONG AND THANKS FOR ALL THE FISH!
|
©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://linistepper.com/Techref/microchip/language/C/math/setbitx.htm"> PIC Micro Controller C Routine Math / Functions / Conversions Function - Set bit x</A> |
Did you find what you needed? |