C语言bitmap的使用技巧】的更多相关文章

bitmap是一种以位的状态来表示某种特性的状态的一种操作方式,类似嵌入式中的寄存器操作,在表示某种特性enable/disable的时候很适用且占用的内存空间也很小 比如:做过交换机或者企业网管,路由器的人可能都知道vlan这个概念,vlan域分为0-4095共4096个vlan,我们在端口下设置vlan的时候,就需要一个机制来记录vlan设置与否, 这个就是bitmap: 假设目前设置的vlan为vlan_x,那么我们是这个操作的: 1.首先定义一个128*4的空间(用的32位机器) int…
Go 语言"避坑"与技巧 任何编程语言都不是完美的,Go 语言也是如此.Go 语言的某些特性在使用时如果不注意,也会造成一些错误,我们习惯上将这些造成错误的设计称为"坑". Go 语言的一些设计也具有与其他编程语言不一样的特性,能优雅.简单.高效地解决一些其他语言难以解决的问题. 本章将会对 Go 语言设计上可能发生错误的地方及 Go 语言本身的使用技巧进行总结和归纳. goroutine(Go语言并发)如何使用才更加高效? Go语言原生支持并发是被众人津津乐道的特…
Python语言防坑小技巧 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.赋值即定义  1>.运行以下代码会出现报错 #!/usr/bin/env python #_*_conding:utf-8_*_ #@author :yinzhengjie #blog:http://www.cnblogs.com/yinzhengjie x = 100 def outer(): def inner(): x += 100 #其实这里等效于"x = x + 100",…
在项目开发的过程中,不可避免的会遇到调试代码的情况. 刚开始写代码时,我们想看具体执行到哪儿时,往往这么写: printf("***** Code is here! *****\n"); 随着调试信息的不断增多,我们项目中的printf()函数到处都是,因此,当调试完成时,发现需要注释掉所有的调试代码将非常痛苦.于是,我们通过宏定义对代码进行了这样的改造: 首先,定义调试宏: #define _DEBUG_IS_MY 然后,在需要添加调试代码的地方,添加以下代码: #ifdef _DE…
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义...... 1.防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2.重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef unsigned long int uint32; /* Unsigned 32 bit value */ typedef u…
下面分享关于位操作的一些笔记: 一.位操作简单介绍 首先,以下是按位运算符: 在嵌入式编程中,常常需要对一些寄存器进行配置,有的情况下需要改变一个字节中的某一位或者几位,但是又不想改变其它位原有的值,这时就可以使用按位运算符进行操作.下面进行举例说明,假如有一个8位的TEST寄存器: 当我们要设置第0位bit0的值为1时,可能会这样进行设置: TEST = 0x01; 但是,这样设置是不够准确的,因为这时候已经同时操作到了高7位:bit1~bit7,如果这高7位没有用到的话,这么设置没有什么影响…
import "fmt" type Rank int const ( Rank001 Rank = iota Rank002 Rank003 Rank004 ) var rewards = [...]string{ "奖励1","奖励2","奖励3","奖励4", } func (r Rank) getReward() string { return rewards[r] } func main() { f…
time.h 头文件 是 C 语言中 有关 时间的函数所储存的头文件 #include <time.h> 在介绍时间函数用法之前,我们首先要了解在 time.h 头文件中已经声明了的一个结构: struct tm 该结构在time.h 头文件内声明如下: #ifndef _TM_DEFINED #define _TM_DEFINED struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_…
由于break语句只能影响它的最内层循环,要想立即从深层嵌套循环中退出,有哪些方法呢? 1.使用goto语句: while(condition1) { while(condition2) { while(condition3) { if(some disaster) goto quit; } } } quit:; 要想在这种情况下避免使用goto语句,可以考虑以下两种方案: 2.设置状态标志: 当你希望退出所有循环时设置一个状态标志,但这个标志在每个循环中都必须进行测试: enum{EXIT,…
// 清除屏幕 #define CLEAR() printf("\033[2J") // 上移光标 #define MOVEUP(x) printf("\033[%dA", (x)) // 下移光标 #define MOVEDOWN(x) printf("\033[%dB", (x)) // 左移光标 #define MOVELEFT(y) printf("\033[%dD", (y)) // 右移光标 #define MOV…