Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- void printHexAndBits(unsigned num){
- printf("%x\t%u\t",num,num);
- int i=1;
- for ( unsigned mask = ~( ~0u >> 1 ); mask ; mask >>= 1, i++ ){
- if ( num & mask){
- putchar('1');
- }
- else {
- putchar('0');
- }
- if (i%4==0){
- putchar(' ');
- }
- }
- putchar('\n');
- }
- unsigned generateMask(unsigned k){
- return ~(~0u<<k);
- }
- unsigned findPattern(unsigned num, unsigned numPattern, unsigned patternBits){
- unsigned pattern = numPattern & generateMask(patternBits);
- unsigned patternOccurance=0;
- for (int i=0; i<sizeof(unsigned)*8 - patternBits ; i++){
- if ((num ^ pattern) == (num - pattern)){
- patternOccurance++;
- }
- num>>=1;
- }
- return patternOccurance;
- }
- int main(){
- unsigned a=0xB6,b=0x36,k=4;
- printf("%u",findPattern(a,b,k));
- }
Add Comment
Please, Sign In to add comment