问一个关于位运算的 面试题?
用32位整数来表示一个道具属性(4bit保留,4bit等级,4bit类型1,4bit类型值1,4bit类型2,4bit类型值2,4bit类型3,4bit类型值4),请用代码来说明如何表示和具体的操作?
[解决办法]
位域
http://www.360doc.com/content/11/0329/10/6637130_105520807.shtml
[解决办法]
//用32位整数来表示一个道具属性(4bit保留,4bit等级,4bit类型1,4bit类型值1,4bit类型2,4bit类型值2,4bit类型3,4bit类型值4),请用代码来说明如何表示和具体的操作?
#include <stdio.h>
union U {
long int i32;
struct S {
int rsv:4; // 4bit保留
int lvl:4; // 4bit等级
int tp1:4; // 4bit类型1
int tv1:4; // 4bit类型值1
int tp2:4; // 4bit类型2
int tv2:4; // 4bit类型值2
int tp3:4; // 4bit类型3
int tv4:4; // 4bit类型值4
} s;
} ta;
int main() {
ta.s.rsv=1;
ta.s.lvl=2;
ta.s.tp1=3;
ta.s.tv1=4;
ta.s.tp2=5;
ta.s.tv2=6;
ta.s.tp3=7;
ta.s.tv4=8;
printf("i32==%08x\n",ta.i32);
return 0;
}
//i32==87654321