首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问一个关于位演算的 面试题

2013-03-01 
问一个关于位运算的 面试题?用32位整数来表示一个道具属性(4bit保留,4bit等级,4bit类型1,4bit类型值1,4bit

问一个关于位运算的 面试题?
用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

热点排行