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);
}
相关文档:
整个测试遵循以下的约定:
u
假定在所有的程序中必须的头文件都已经被正确包含。
考虑如下的数据类型:
u
char
为
1
个字节
u
int
为
4
个字节
u
......
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++编译的程序占用的内存分为以下几个部分
1、栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。程序结束时由编译器自动释放。
2、堆区(heap) — 在内存开辟另一块存储区域。一般由程序员分配释放, 若程序员不释放,程序结束时可 ......