一段好玩的代码
2011-09-28 01:21
246 查看
这是编程之美上的一段代码,使用一个字节的空间,计算象棋中将帅的位置关系
这里是书中最简单的一个代码段:
//#include <stdio.h>
#include <iostream>
#define HALF_BITS_LENGTH 4
#define FULLMASK 255
#define LMASK (FULLMASK << HALF_BITS_LENGTH)//1111000
#define RMASK (FULLMASK >> HALF_BITS_LENGTH)//00001111
#define RSET(b,n) (b = ((LMASK & b) ^ n))
#define LSET(b,n) (b = ((RMASK & b) ^ (n << HALF_BITS_LENGTH)))
#define RGET(b) (RMASK & b)
#define LGET(b) ((LMASK & b) >> HALF_BITS_LENGTH)
#define GRIDW 3
int main()
{
unsigned char b = 0;
for(LSET(b,1); LGET(b) <= GRIDW * GRIDW;LSET(b,(LGET(b)+1)))
{
for(RSET(b,1); RGET(b) <= GRIDW * GRIDW;RSET(b,(RGET(b)+1)))
{
if(LGET(b)%GRIDW != RGET(b)%GRIDW)
{
std::cout<<"A = "<<LGET(b)<<"B= "<<RGET(b)<<std::endl;
//printf("A=%d,B = %d\n",LGET(b),RGET(b));
}
}
}
return 0;
}
这里是书中最简单的一个代码段:
//#include <stdio.h>
#include <iostream>
#define HALF_BITS_LENGTH 4
#define FULLMASK 255
#define LMASK (FULLMASK << HALF_BITS_LENGTH)//1111000
#define RMASK (FULLMASK >> HALF_BITS_LENGTH)//00001111
#define RSET(b,n) (b = ((LMASK & b) ^ n))
#define LSET(b,n) (b = ((RMASK & b) ^ (n << HALF_BITS_LENGTH)))
#define RGET(b) (RMASK & b)
#define LGET(b) ((LMASK & b) >> HALF_BITS_LENGTH)
#define GRIDW 3
int main()
{
unsigned char b = 0;
for(LSET(b,1); LGET(b) <= GRIDW * GRIDW;LSET(b,(LGET(b)+1)))
{
for(RSET(b,1); RGET(b) <= GRIDW * GRIDW;RSET(b,(RGET(b)+1)))
{
if(LGET(b)%GRIDW != RGET(b)%GRIDW)
{
std::cout<<"A = "<<LGET(b)<<"B= "<<RGET(b)<<std::endl;
//printf("A=%d,B = %d\n",LGET(b),RGET(b));
}
}
}
return 0;
}
相关文章推荐
- 一段好玩的代码
- 一段好玩的修改网页的代码
- 一段好玩的JavaScript代码
- 今天在群里看到有人分享了一段搞笑的注释代码,觉得挺好玩的,
- 一段好玩的JavaScript代码
- 一段输出自身代码的好玩程序
- 一段好玩的编程代码
- 一段好玩的python代码--随机生成圆
- 一段好玩的python代码--随机生成圆
- 关于输出null对象,以及try/catch/finally比较好玩的一段代码
- 一段好玩的Python代码解读
- 关于JS对正文进行字数统计的一段代码
- 单片机数字滤波 的 一段 代码程序
- 如何快速测试一段JS代码(Chorme)
- 一段有意思的加密代码
- VC操作Excel的概述和一段代码
- 【转载】一段有趣的Javascript代码及分析
- [算法] 【一段破代码,对SSL异步编程感兴趣的同学有福了, 欢迎高手指正使用错误】
- 一段JS代码,点击按钮显示一块区域,再点击则隐藏这块区域
- 每天一段代码-说说泛型