| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
牛。。。In Reply To:这个会容易看些 Posted by:frkstyc at 2005-12-17 18:57:01 > #include <stdio.h>
> #define BIT(x, n) (((x) >> (n)) & 1u)
> #define BIT1(n) (1u << (n))
> #define SET(x, n, b) (((x) & ~BIT1(n)) | ((b) << (n)))
> #define MASK(n, m) (((1u << (m)) - 1) << (n))
> #define ROR(x, n, m) (((x) & ~MASK(n, m)) | (BIT(x, n) << ((n) + (m) - 1)) | (((x) & MASK((n) + 1, (m) - 1)) >> 1))
> #define ADD(x) \
> do\
> {\
> (x) = ROR(x, 0, 8);\
> (x) = ROR(x, 16, 8);\
> (x) = SET(x, 25, (BIT(x, 7) & BIT(x, 23)) | (BIT(x, 7) & BIT(x, 24)) | (BIT(x, 23) & BIT(x, 24)));\
> (x) = SET(x, 7, BIT(x, 7) ^ BIT(x, 23) ^ BIT(x, 24));\
> (x) = SET(x, 24, BIT(x, 25));\
> }\
> while(0)
> #define ADD8(x) \
> do\
> {\
> ADD(x);\
> ADD(x);\
> ADD(x);\
> ADD(x);\
> ADD(x);\
> ADD(x);\
> ADD(x);\
> ADD(x);\
> }\
> while(0)
>
> int main(void)
> {
> unsigned int a;
> scanf("%hu %hu", (unsigned short int*)&a, (unsigned short int*)&a + 1);
> ADD8(a);
> printf("%u\n", (unsigned int)*(unsigned char*)&a);
> return 0;
> }
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator