winmenaruto1 发表于 2012-4-16 19:40:28

为一个int型的value第【24:16】赋值,求解答

【24:16】的最大最小值为:
min :1 0000 0000
max :0 1111 1111
然后
传入一个int型,就是代表【24:16】,求最简便的方法对value置位

cqv 发表于 2012-4-16 20:11:29

最大256,最小-256?
9位数的直接传值?
我想到最简单的是直接位域访问。

winmenaruto1 发表于 2012-4-16 20:40:25

cqv 发表于 2012-4-16 20:11 static/image/common/back.gif
最大256,最小-256?
9位数的直接传值?
我想到最简单的是直接位域访问。


能具体说一下代码吗?今天的笔试。。没写清楚

cqv 发表于 2012-4-16 21:05:31

本帖最后由 cqv 于 2012-4-16 21:08 编辑

struct T
{
int a:9;
int r:15;
};
((struct T *)value)->a=1;
直接这样访问。

winmenaruto1 发表于 2012-4-16 21:10:12

cqv 发表于 2012-4-16 21:05 static/image/common/back.gif
struct T
{
int a:9;


min :1 0000 0000
max :0 1111 1111

根据考官的意思 min max设置为这么,有意义的,说移位的时候要考虑的,最高位什么的,不知道这个有什么意义吗?我不明白他的意思

cqv 发表于 2012-4-16 21:19:15

本帖最后由 cqv 于 2012-4-16 21:26 编辑

刚才的结构体有点小问题,我这边给你一个范例:
刚才用VC6试了下
#include <stdio.h>

struct T
{
        int r:16;
        int a:9;
};

void main(void)
{
        int value1=0;
        int value2=0;
        ((struct T *)&value1)->a=-256;
        ((struct T *)&value2)->a=255;
        printf("%d,%d",((struct T *)&value1)->a,((struct T *)&value2)->a);
}
考官的意思就是用int的9位位域标识-256~255的值范围吗?

823032003 发表于 2012-4-16 21:23:43

cqv 发表于 2012-4-16 21:05 static/image/common/back.gif
struct T
{
int a:9;


你这样写a是低位吧{:smile:}

winmenaruto1 发表于 2012-4-16 21:25:44

cqv 发表于 2012-4-16 21:19 static/image/common/back.gif
刚才的结构体有点小问题,我这边给你一个范例:
刚才用VC6试了下
#include


呵呵,谢谢,我也不知道他什么意思,但是如果用这么做,应该他也挑不出毛病了。

cqv 发表于 2012-4-16 21:27:14

823032003 发表于 2012-4-16 21:23 static/image/common/back.gif
你这样写a是低位吧

确实啊,我这不是自己用VCdebug下,改了小程序贴出来了吗。呵呵。

cqv 发表于 2012-4-16 21:29:26

winmenaruto1 发表于 2012-4-16 21:25 static/image/common/back.gif
呵呵,谢谢,我也不知道他什么意思,但是如果用这么做,应该他也挑不出毛病了。 ...

这个。最好还是自己多懂点。试验下。
我也是看下你的问题,然后自己用VC分析了下。
之前我也是没试过位域对于有符号型 int的支持效果的。。呵呵

苦行僧 发表于 2012-4-16 21:45:17

没看懂LZ问的是什么,呵呵

wgyoume 发表于 2012-5-2 18:36:53

我也没看懂,不知道是不是这样的:value |= (1 << n);
页: [1]
查看完整版本: 为一个int型的value第【24:16】赋值,求解答