自己实现函数,用位运算实现对一个无符号整型的二进制打印,八进制打印,十六进制打印;
用位运算实现字符的大小写转换,要求:输入大写的字符转为小写,输入小写的字符转为大写;
取出一个整型数中的指定的位,比如取出100的4~7位;
用位运算实现随机生成无重复的26个字母,要求不允许使用数组,结构体;(提示:用一个整型数记录产生的字母)
计算一个整数a中有多少个1;(提示:a & a-1 可以把最右边的1变成0)
给定任意一个数字a,如果a中含有k个1,请用位运算生成下一个含有k个1的二进制数
参考阅读 http://www.matrix67.com/blog/archives/813
趣味题:一副扑克牌从A到K,同一花色中随机抽出4张,共有多少种组合的方式?
漫谈字符集和编码
http://wenku.baidu.com/view/cb9fe505cc17552707220865.html
编码,charset,乱码,unicode,utf-8与net简单释义
http://tsoukw.cnblogs.com/archive/2006/07/13/449588.html
有兴趣的同学可以尝试在终端 Console 下显示 ”汉“ 字
http://wenku.baidu.com/view/395f895d312b3169a451a489.html
参考代码
#include <stdio.h>
char buf[32] = {
0x40, 0x08,
0x37, 0xfc,
0x10, 0x08,
0x82, 0x08,
0x62, 0x08,
0x22, 0x10,
0x09, 0x10,
0x11, 0x20,
0x20, 0xa0,
0xe0, 0x40,
0x20, 0xc0,
0x21, 0x10,
0x22, 0x08,
0x24, 0x0e,
0x08, 0x04,
0x00, 0x00
};
char sub = 'a';
int main(void)
{
int i = 0, j;
printf("hello, font demo \n");
//scanf("%c", &sub);
while (i < 32)
{
for (j = 7; j >= 0; j--)
{
char c = buf[i];
if (c & (1<<j))
printf("%c", sub);
else
printf(" ");
}
i++;
for (j = 7; j >= 0; j--)
{
char c = buf[i];
if (c & (1<<j))
printf("%c", sub);
else
printf(" ");
}
i++;
printf("\n");
}
return 0;
}