Revision: | 1.3 |
Committed: | Sun Apr 28 07:58:43 2013 UTC (10 years, 4 months ago) by tplarson |
Content type: | text/plain |
Branch: | MAIN |
CVS Tags: | globalhs_version_5, Ver_8-7, Ver_8-5, globalhs_version_23, globalhs_version_22, globalhs_version_21, globalhs_version_20, Ver_LATEST, globalhs_version_24, Ver_8-3, globalhs_version_8, globalhs_version_9, globalhs_version_0, globalhs_version_1, globalhs_version_2, globalhs_version_3, globalhs_version_4, Ver_9-41, globalhs_version_6, globalhs_version_7, Ver_9-5, Ver_8-8, globalhs_version_19, Ver_8-2, Ver_8-10, Ver_8-1, Ver_8-6, Ver_9-1, Ver_8-4, Ver_9-2, globalhs_version_12, globalhs_version_13, globalhs_version_10, globalhs_version_11, globalhs_version_16, globalhs_version_17, globalhs_version_14, globalhs_version_15, globalhs_version_18, Ver_9-4, Ver_9-3, Ver_8-11, Ver_8-12, Ver_9-0, HEAD |
Changes since 1.2: | +2 -0 lines |
Log Message: | added string to track cvs versions |
# | Content |
---|---|
1 | char *cvsinfo = "cvsinfo: $Header: calversfunctions.c $"; |
2 | |
3 | /* |
4 | the following function is taken directly from chapter 2 of Kernighan and Ritchie |
5 | getbits: get n bits from position p |
6 | */ |
7 | unsigned long long getbits(unsigned long long x, int p, int n) |
8 | { |
9 | return (x >> (p+1-n)) & ~(~0ull << n); |
10 | } |
11 | |
12 | /* |
13 | Richard Heathfield's solution to exercise 2-6 of K&R |
14 | */ |
15 | unsigned long long setbits(unsigned long long x, int p, int n, unsigned long long y) |
16 | { |
17 | return (x & ((~0ull << (p + 1)) | (~(~0ull << (p + 1 - n))))) | ((y & ~(~0ull << n)) << (p + 1 - n)); |
18 | // another solution (untested): |
19 | //return (x & ~(~(~0<<n)<<(p+1)) | (y&~(~0<<n)) << (p+1)); |
20 | } |
21 | |
22 | unsigned long long fixcalver64(unsigned long long x) |
23 | { |
24 | int firstnibble = getbits(x,3,4); |
25 | if (firstnibble == 0) |
26 | return setbits(x,3,4,2); |
27 | else |
28 | return x; |
29 | } |
30 | |
31 |