ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/JSOC/proj/globalhs/apps/calversfunctions.c
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

File Contents

# 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