00001
00002
00003
00004
00005
00006
00007 #include "standard.h"
00008
00009 byte getbit(byte b, int n)
00010
00011
00012
00013
00014 {
00015 return (b >> (8-n)) & 1;
00016 }
00017
00018 unsigned int getbitint(unsigned int b, int n)
00019
00020
00021
00022
00023 {
00024 return (b >> (16-n)) & 1;
00025 }
00026
00027
00028 void setbit(byte *b, int n, byte v)
00029
00030
00031
00032
00033
00034
00035 {
00036 if (v != 0)
00037 *b = (*b | (128 >> (n-1)));
00038 else
00039 *b = (*b & (~(128 >> (n-1))));
00040 }
00041
00042
00043 void setbitint(unsigned int *b, int n, byte v)
00044
00045
00046
00047
00048
00049
00050
00051
00052 {
00053 if (v != 0)
00054 *b = (*b | (32768 >> (n-1)));
00055 else
00056 *b = (*b & (~(32768 >> (n-1))));
00057 }
00058
00059 void printbyte(byte b)
00060
00061 {
00062 int j;
00063 for(j=7;j>=0;j--)
00064 if ((int) b & (1 << j))
00065 printf("1");
00066 else
00067 printf("0");
00068 printf("\n");
00069 }
00070
00071 void printint(unsigned int b)
00072
00073 {
00074 int j;
00075 for(j=15;j>=0;j--)
00076 if ((int) b & (1 << j))
00077 printf("1");
00078 else
00079 printf("0");
00080 printf("\n");
00081 }
00082
00083
00084 int random_bit(void)
00085
00086
00087
00088
00089
00090 {
00091 static int random_counter = -1;
00092 static int r;
00093
00094 if (random_counter == -1) {
00095 r = rand();
00096 random_counter = 30;
00097 }
00098 return ((r & (1 << random_counter--))?1:0);
00099 }
00100
00101 void randomize_byte(byte *b)
00102
00103
00104
00105 {
00106 int i;
00107
00108 for (i=1;i<=8;i++)
00109 setbit(b,i,random_bit());
00110 }