亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 4682 | 回復(fù): 12
打印 上一主題 下一主題

[應(yīng)用] 求助關(guān)于位域存儲順序 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-12-20 23:56 |只看該作者 |倒序瀏覽
本帖最后由 newmalloc 于 2010-12-21 00:06 編輯

假設(shè)有個32bit寄存器定義如下
A:3
B:11
C:18

定義位域表示這個寄存器
typedef struct __bitStruc
{
    volatile unsigned int a: 1;
    volatile unsigned int b: 13;
    volatile unsigned int c: 18;
}bitStruc;

bitStruc b;

b.a = 1;
b.b = 5;
b.c =  7;

在小端系統(tǒng)中,a成員的實際存儲位置并不是在bitStruc的最高位,如果想讓a位的存儲位置在最高位,即bit31,有沒有什么辦法呢?比如加上什么特殊的修飾符

求助論壇內(nèi)的高手們!

論壇徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16賽季CBA聯(lián)賽之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金雞報曉
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年紀念徽章
日期:2016-11-09 13:19:1015-16賽季CBA聯(lián)賽之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序設(shè)計版塊每日發(fā)帖之星
日期:2015-12-03 06:20:002015七夕節(jié)徽章
日期:2015-08-21 11:06:17IT運維版塊每日發(fā)帖之星
日期:2015-08-09 06:20:002015亞冠之吉達阿赫利
日期:2015-07-03 08:39:42
2 [報告]
發(fā)表于 2010-12-21 10:44 |只看該作者
那你就把a寫在最下面?

論壇徽章:
0
3 [報告]
發(fā)表于 2010-12-21 13:23 |只看該作者
一般通過宏來定義__bitStruc吧

論壇徽章:
0
4 [報告]
發(fā)表于 2010-12-21 14:45 |只看該作者
回復(fù) 1# newmalloc


    結(jié)構(gòu)體內(nèi)部的數(shù)據(jù)是依次排列的。如果想將A 位段表示高位。只有將其放在最后。

論壇徽章:
0
5 [報告]
發(fā)表于 2010-12-21 15:22 |只看該作者
不知道這樣行不行。
  1. typedef struct __bitStruc
  2. {
  3.     #ifdef _BIG_ENDIAN_
  4.     volatile unsigned int a: 1;
  5.     #endif
  6.     volatile unsigned int b: 13;
  7.     volatile unsigned int c: 18;
  8.     #ifdef _LITTLE_ENDIAN_
  9.     volatile unsigned int a: 1;
  10.     #endif
  11. }bitStruct;
復(fù)制代碼

論壇徽章:
0
6 [報告]
發(fā)表于 2010-12-21 15:36 |只看該作者
本帖最后由 snail_314 于 2010-12-21 15:38 編輯

回復(fù) 1# newmalloc


    拜托.你又不是要解析一個long類型的變量,這是寄存器,你還考慮小端大端???
下面居然還有這么多人回答.
你這么定義bitStruct那么的a這個域百分之百在LSB,不會變成MSB的.不管什么大端小端

論壇徽章:
0
7 [報告]
發(fā)表于 2010-12-21 16:00 |只看該作者
不知道這樣行不行。
tzx85 發(fā)表于 2010-12-21 15:22


2樓的方法是有效的,感謝!

另外,昨晚被一個博客給迷惑了(http://blog.csdn.net/daly888/archive/2007/05/05/1597267.aspx

截止目前為止,我看到的大小端都是針對字節(jié)序,不涉及字節(jié)內(nèi)位序。

論壇徽章:
0
8 [報告]
發(fā)表于 2010-12-21 16:03 |只看該作者
回復(fù) 6# snail_314


    您有什么方法定義,能夠讓a在bit31嗎?

    另外,想了下,還沒見過有人在代碼中表示寄存器定義的時候用位域結(jié)構(gòu)體,一般是一個32bit整型變量,
來表示一個32bit的寄存器,進行位操作來改變寄存器的值。

論壇徽章:
0
9 [報告]
發(fā)表于 2010-12-21 16:03 |只看該作者
回復(fù) 4# linyunxian


    這個方法是對的

論壇徽章:
0
10 [報告]
發(fā)表于 2010-12-21 17:09 |只看該作者
回復(fù) 9# newmalloc


    如果只對高位感興趣,讓A 表示MSB, 可用位段填充。
    union {
        int        :28;
        int        a:4;
    }msb;
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP