Simplify bitmask test/set from FORTRANish to actual C.
This commit is contained in:
parent
63f53c026d
commit
aef609291d
2 changed files with 5 additions and 17 deletions
2
advent.h
2
advent.h
|
@ -55,7 +55,7 @@ extern void CARRY(long,long);
|
||||||
extern void DROP(long,long);
|
extern void DROP(long,long);
|
||||||
extern long ATDWRF(long);
|
extern long ATDWRF(long);
|
||||||
extern long SETBIT(long);
|
extern long SETBIT(long);
|
||||||
extern long TSTBIT(long,long);
|
extern bool TSTBIT(long,int);
|
||||||
extern long RNDVOC(long,long);
|
extern long RNDVOC(long,long);
|
||||||
extern void BUG(long);
|
extern void BUG(long);
|
||||||
extern void MAPLIN(FILE *);
|
extern void MAPLIN(FILE *);
|
||||||
|
|
20
misc.c
20
misc.c
|
@ -631,26 +631,14 @@ L2: AT=I;
|
||||||
/* Utility routines (SETBIT, TSTBIT, set_seed, get_next_lcg_value,
|
/* Utility routines (SETBIT, TSTBIT, set_seed, get_next_lcg_value,
|
||||||
* randrange, RNDVOC, BUG) */
|
* randrange, RNDVOC, BUG) */
|
||||||
|
|
||||||
long SETBIT(long BIT) {
|
long SETBIT(long bit) {
|
||||||
long I, IND;
|
|
||||||
|
|
||||||
/* Returns 2**bit for use in constructing bit-masks. */
|
/* Returns 2**bit for use in constructing bit-masks. */
|
||||||
|
2 << bit;
|
||||||
IND=1;
|
|
||||||
if(BIT <= 0)return(IND);
|
|
||||||
for (I=1; I<=BIT; I++) {
|
|
||||||
IND=IND+IND;
|
|
||||||
} /* end loop */
|
|
||||||
return(IND);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TSTBIT(long mask, int bit) {
|
||||||
|
|
||||||
long TSTBIT(long MASK, long BIT) {
|
|
||||||
|
|
||||||
/* Returns true if the specified bit is set in the mask. */
|
/* Returns true if the specified bit is set in the mask. */
|
||||||
|
return((mask & (1 << bit)) != 0);
|
||||||
return(MOD(MASK/SETBIT(BIT),2) != 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_seed(long seedval)
|
void set_seed(long seedval)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue