易截截图软件、单文件、免安装、纯绿色、仅160KB

C 学习笔记: 移位操作练习。

#include <stdio.h>
unsigned int reverse_bits(unsigned int value)
{
    unsigned int answer;
    unsigned int i;
    answer = 0;
   
    for(i=1;i!=0;i<<=1){ //此循环可以忽略机器的差异。64位和32位皆可用,增强此代码的可移植性
        answer <<=1;
        if(value & 1)
            answer |= 1;
        value >>=1;
    }
    return answer;
}
int main(void)
{
    unsigned int get_answer=reverse_bits(13);
    int i=31;
    char t;
    while(i)
    {
        t ='0'+ ((get_answer >> i) & 1);
        printf("%c",t);
        i--;
    }
}
<<C和指针>> 第5章练习题。
Linux 2.6 kernel中的set_bit操作:
需要考虑机器是32位还是64位的计算机。
static inline void set_bit(int nr, volatile unsigned long *addr)
{
    int *a = (int *)addr;
    int mask;
    //unsigned long flags;
    a += nr >> 5; 
    mask = 1 << (nr & 0x1f);
    //local_irq_save_hw(flags);
    *a |= mask;
    //local_irq_restore_hw(flags);
}


相关文档:

C/C++语言实现动态数组

C/C++语言实现动态数组
C数组的小问题
     这里说的动态数组是可以根据需要动态增长占用内存的数组,比如程序初始分配了100个元素,可是运行了一段时间后区区100个空间不能满足了,现在需要400个,怎么办呢;那肯定需要再额外分配300个。
     C语言有realloc()函数来解决空间 ......

C和C++混合编程(__cplusplus 与 external "c" 的使用)

http://www.diybl.com/course/3_program/c++/cppjs/20090403/163906.html
C和C++混合编程(__cplusplus 与 external "c" 的使用)
www.diybl.com 时间:2009-04-03 作者:匿名 编辑:sky 点击: 124 [评论]
第一种理解
比如说你用C++开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Export)的函数,你需要用exte ......

C/C++程序内存分配详解


一个由C/C++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。
2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可 ......

程序员的自我修养: 程序运行的基石 C/C++运行库

一个C语言运行库大致包含了如下功能:
1. 启动与退出: 包括入口函数及入口函数所依赖的其它函数等
2. 标准函数: 由C语言标准规定的C语言标准库所拥有的函数实现.
3. I/O: IO功能的封装和实现
4. 堆:堆的封装和实现
5. 语言实现: 语言中一些特殊功能的实现.
6. 调试: 实现调试功能的代码.
在这些运行库的组成成分中, C ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号