| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1306 人关注过本帖
标题:CSDN, 我进去看一次就吐一次, 哈哈
只看楼主 加入收藏
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
结帖率:94.72%
收藏
已结贴  问题点数:20 回复次数:19 
CSDN, 我进去看一次就吐一次, 哈哈
题目:
怎样生成一个字节,可以记录一布尔值
比如
01111100,
读取后输出为:
a是0
b是1
c是1
d是1
e是1
f是1
g是0
h是0


[ 本帖最后由 BlueGuy 于 2010-9-24 10:50 编辑 ]
搜索更多相关主题的帖子: CSDN 
2010-09-24 10:48
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

#include <stdio.h>

union ucb {
    struct cb_bits {
        unsigned char b0:1;
        unsigned char b1:1;
        unsigned char b2:1;
        unsigned char b3:1;
        unsigned char b4:1;
        unsigned char b5:1;
        unsigned char b6:1;
        unsigned char b7:1;
    } cb_bits;
    unsigned char cb_byte;
#define cb_bit0    cb_bits.b0
#define cb_bit1    cb_bits.b1
#define cb_bit2    cb_bits.b2
#define cb_bit3    cb_bits.b3
#define cb_bit4    cb_bits.b4
#define cb_bit5    cb_bits.b5
#define cb_bit6    cb_bits.b6
#define cb_bit7    cb_bits.b7
};

int main(void)
{
    union ucb ucb;

    ucb.cb_byte = 0x7c;

    printf("%d", ucb.cb_bit7);
    printf("%d", ucb.cb_bit6);
    printf("%d", ucb.cb_bit5);
    printf("%d", ucb.cb_bit4);
    printf("%d", ucb.cb_bit3);
    printf("%d", ucb.cb_bit2);
    printf("%d", ucb.cb_bit1);
    printf("%d", ucb.cb_bit0);
    printf("\n");

    printf("0x%02x\n", ucb.cb_byte);

    ucb.cb_bit7 = 1;
    printf("%d", ucb.cb_bit7);
    printf("%d", ucb.cb_bit6);
    printf("%d", ucb.cb_bit5);
    printf("%d", ucb.cb_bit4);
    printf("%d", ucb.cb_bit3);
    printf("%d", ucb.cb_bit2);
    printf("%d", ucb.cb_bit1);
    printf("%d", ucb.cb_bit0);
    printf("\n");

    printf("0x%02x\n", ucb.cb_byte);
    return 0;
}

我就是真命天子,顺我者生,逆我者死!
2010-09-24 10:49
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
const static unsigned int bits[] = {0x80, 0x40, 0x20, 0x10, 8, 4, 2, 1};
char a = 0X3C;
for (j = 0; j < 8; j++) {
{
   if (a & bits[j%8])
       printf("%d", 1);
   else
       printf("%d", 0);
}

我就是真命天子,顺我者生,逆我者死!
2010-09-24 11:01
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
冒泡和选择排序该被踢出教材了
实用排序算法(复杂度小于等于O(n^2))中效率最低但实现并不是最简单的的两个,C、C++教材却总喜欢拿来大讲特讲,非常不利于初学者养成“程序效率”的思维。

实际上,各种排序算法里,除了堆排序实现较为复杂外,从代码量的角度,大多数算法都不比冒泡、选择算法复杂多少。

举几个高速的排序算法的例子,这些才适合进入教材

鸽巢排序,排序字节串、宽字节串最快的排序算法,计数排序的变种(将计数缓冲区大小固定,少一次遍历开销),速度是STL中std::sort的20多倍,更重要的是实现极其简单!缺点是需要一个size至少等于待排序数组取值范围的缓冲区,不适合int等大范围数据


[ 本帖最后由 BlueGuy 于 2010-9-24 11:05 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2010-09-24 11:04
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:2 
学习下!顺便接分

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-09-24 11:10
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:2 
个人认为CSDN还是比较活跃的!百度排名第一呢
2010-09-24 11:10
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:2 
以下是引用BlueGuy在2010-9-24 10:49:33的发言:


#include

union ucb {
    struct cb_bits {
        unsigned char b0:1;
        unsigned char b1:1;
        unsigned char b2:1;
        unsigned char b3:1;
        unsigned char b4:1;
        unsigned char b5:1;
        unsigned char b6:1;
        unsigned char b7:1;
    } cb_bits;
    unsigned char cb_byte;
#define cb_bit0    cb_bits.b0
#define cb_bit1    cb_bits.b1
#define cb_bit2    cb_bits.b2
#define cb_bit3    cb_bits.b3
#define cb_bit4    cb_bits.b4
#define cb_bit5    cb_bits.b5
#define cb_bit6    cb_bits.b6
#define cb_bit7    cb_bits.b7
};

int main(void)
{
    union ucb ucb;

    ucb.cb_byte = 0x7c;

    printf("%d", ucb.cb_bit7);
    printf("%d", ucb.cb_bit6);
    printf("%d", ucb.cb_bit5);
    printf("%d", ucb.cb_bit4);
    printf("%d", ucb.cb_bit3);
    printf("%d", ucb.cb_bit2);
    printf("%d", ucb.cb_bit1);
    printf("%d", ucb.cb_bit0);
    printf("\n");

    printf("0x%02x\n", ucb.cb_byte);

    ucb.cb_bit7 = 1;
    printf("%d", ucb.cb_bit7);
    printf("%d", ucb.cb_bit6);
    printf("%d", ucb.cb_bit5);
    printf("%d", ucb.cb_bit4);
    printf("%d", ucb.cb_bit3);
    printf("%d", ucb.cb_bit2);
    printf("%d", ucb.cb_bit1);
    printf("%d", ucb.cb_bit0);
    printf("\n");

    printf("0x%02x\n", ucb.cb_byte);
    return 0;
}
漂亮! CSDN我只问问题,里面高手太多了!
2010-09-24 11:13
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
回复 7楼 hahayezhe
我本想在那个帖子里回复你一次的, 想想还是算了,
以下是引用真我在2010-9-23 22:42:55的发言:

/*******************************/
不带你这样玩的,这样更累
你都不懂就乱评价!
程序代码:
#define PIG_NUMBER_ONE(a,b,c) printf("%d%d%d\n",a,b,c);
#define PIG_NUMBER_TWO(a,b,c) PIG_NUMBER_ONE(a,b,c)\
    PIG_NUMBER_ONE(a,c,b)\
    PIG_NUMBER_ONE(b,a,c)\
    PIG_NUMBER_ONE(b,c,a)\
    PIG_NUMBER_ONE(c,b,a)\
    PIG_NUMBER_ONE(c,a,b)
#define PIG_NUMBER_THREE(a,b) PIG_NUMBER_ONE(a,a,b)\
    PIG_NUMBER_ONE(a,b,a)\
    PIG_NUMBER_ONE(b,a,a)
int main(){   
    for(unsigned int a=0;a<10;a++){
        if(a==3)
            continue;
        for(unsigned int b=a;b<10;b++){
            if(b==3&&b==0)
                continue;
            if((a+b)%3==0){
                PIG_NUMBER_TWO(3,b,a)
            }
        }
    }
    PIG_NUMBER_THREE(0,3)
    PIG_NUMBER_THREE(3,6)
    PIG_NUMBER_THREE(3,9)
    PIG_NUMBER_ONE(3,3,3)
    return 0;
}

你这代码也够漂亮的,

我就是真命天子,顺我者生,逆我者死!
2010-09-24 11:16
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
以下是引用BlueGuy在2010-9-24 11:01:50的发言:

const static unsigned int bits[] = {0x80, 0x40, 0x20, 0x10, 8, 4, 2, 1};
char a = 0X3C;
for (j = 0; j < 8; j++) {
{
   if (a & bits[j%8])
       printf("%d", 1);
   else
       printf("%d", 0);
}
你没有看到他的通用性,虽然定义很多,
但是他的代码可以做到提取int ,等其他多字节的类型,
比如我定义一个
struct stu{
int i;
double c;
};
我可以直接用他那个联合体指针取单bit位,
你的虽然简单,但是提取时避免不了与运算
而且在提取没有他来的更直接,更通用!
2010-09-24 11:20
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
但是他的代码可以做到提取int ,等其他多字节的类型
// 这句我不想多做解释。

我可以直接用他那个联合体指针取单bit位,
你的虽然简单,但是提取时避免不了与运算
而且在提取没有他来的更直接,更通用!
//
也许吧,各有各的审美观。

我就是真命天子,顺我者生,逆我者死!
2010-09-24 11:25
快速回复:CSDN, 我进去看一次就吐一次, 哈哈
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017518 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved