first commit
This commit is contained in:
102
Utils.c
Normal file
102
Utils.c
Normal file
@@ -0,0 +1,102 @@
|
||||
#define _BSD_SOURCE 1
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "Utils.h"
|
||||
|
||||
inline void
|
||||
printbin32( const unsigned long ulVal,
|
||||
const unsigned char bGroupByBytes)
|
||||
{
|
||||
for(unsigned long idxBit = 1<<31;idxBit>0;idxBit>>=1)
|
||||
{
|
||||
if(bGroupByBytes)
|
||||
switch(idxBit)
|
||||
{
|
||||
case 1<<23:
|
||||
case 1<<15:
|
||||
case 1<<7:
|
||||
putchar(' ');
|
||||
}
|
||||
putchar(ulVal & idxBit ? '1' : '0');
|
||||
}
|
||||
}
|
||||
|
||||
inline unsigned char
|
||||
count_bit32(const unsigned long ulVal)
|
||||
{
|
||||
unsigned char cpt = 0;
|
||||
for(unsigned long idxBit = 1<<31;idxBit>0;idxBit>>=1)
|
||||
if(ulVal & idxBit)
|
||||
cpt++;
|
||||
return cpt;
|
||||
}
|
||||
|
||||
inline unsigned char
|
||||
count_bit8(const unsigned char ulVal)
|
||||
{
|
||||
unsigned char cpt = 0;
|
||||
for(unsigned char idxBit = 1<<7;idxBit>0;idxBit>>=1)
|
||||
if(ulVal & idxBit)
|
||||
cpt++;
|
||||
return cpt;
|
||||
}
|
||||
|
||||
inline void
|
||||
printbin32Info( const unsigned long ulVal,
|
||||
const unsigned short uhb,
|
||||
const unsigned short ulb)
|
||||
{
|
||||
printbin32(ulVal,1);
|
||||
putchar('\n');
|
||||
printf("%02d....%02d %02d....%02d %02d....%02d %02d....%02d\n",
|
||||
uhb,
|
||||
3*(uhb+ulb+1)/4, 3*((uhb+ulb+1)/4)-1,
|
||||
(uhb+ulb+1)/2, ((uhb+ulb+1)/2)-1,
|
||||
(uhb+ulb+1)/4, ((uhb+ulb+1)/4)-1,
|
||||
ulb);
|
||||
}
|
||||
|
||||
unsigned long get_notnull_random()
|
||||
{
|
||||
unsigned long val;
|
||||
do
|
||||
val = random()<<1 ^ random();
|
||||
while(!val);
|
||||
return val;
|
||||
}
|
||||
|
||||
unsigned long get_notnull_random_balanced()
|
||||
{
|
||||
unsigned long val;
|
||||
do
|
||||
val = random()<<1 ^ random();
|
||||
while(count_bit32(val) != 16);
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
unsigned char get_notnull8_random_balanced()
|
||||
{
|
||||
unsigned char val;
|
||||
static unsigned char prev = 0;
|
||||
do
|
||||
val = random()<<1 ^ random();
|
||||
while((count_bit8(val) != 4) || (val == prev));
|
||||
prev = val;
|
||||
return val;
|
||||
}
|
||||
|
||||
unsigned long get_notnull_random_balanced_mByte()
|
||||
{
|
||||
unsigned long val;
|
||||
static unsigned long prev = 0;
|
||||
do
|
||||
val = (get_notnull8_random_balanced() << 24)
|
||||
| (get_notnull8_random_balanced() << 16)
|
||||
| (get_notnull8_random_balanced() << 8)
|
||||
| (get_notnull8_random_balanced() << 0);
|
||||
while(val == prev);
|
||||
prev = val;
|
||||
return val;
|
||||
}
|
||||
Reference in New Issue
Block a user