V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
814084764
V2EX  ›  C

C 语言,关于位的赋值问题

  •  
  •   814084764 · 2016-06-07 15:58:35 +08:00 · 2022 次点击
    这是一个创建于 2881 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问一个问题:有 byte[] dst ,7 个字节。 如何给前面 12bit 赋值为 0xfff 。给第 13bit 赋值为 0 ?

    9 条回复    2016-06-08 13:05:10 +08:00
    catro
        1
    catro  
       2016-06-07 16:50:33 +08:00
    dst[0] = 0xFF;
    dst[1]在没有初始值的情况下,
    dst[1] = 0xF0;
    有初始值的情况下,
    dst[1] != 0xF0;
    dst[1] &= 0xF7;
    zodiac1111
        2
    zodiac1111  
       2016-06-07 18:18:53 +08:00
    位域如何?
    am241
        3
    am241  
       2016-06-07 19:10:22 +08:00
    变量内部
    位清零:
    x &= 0b1110111;
    位赋值:
    x |= 0b0001000;
    sfqtsh
        4
    sfqtsh  
       2016-06-07 19:39:03 +08:00 via Android   ❤️ 1
    C 语言有 byte 类型?有 type[] var 这种写法?
    chiu
        5
    chiu  
       2016-06-07 19:42:46 +08:00
    暂且认为你说的“前面 12bit ”,是指“低 12bit ”。

    *dst |= 0x00000000000FFF;
    *dst &= 0xFFFFFFFFFFEFFF;
    Neveroldmilk
        6
    Neveroldmilk  
       2016-06-08 09:20:13 +08:00
    @chiu 哥们,一个 16 进制数代表 4bit......
    chiu
        7
    chiu  
       2016-06-08 09:52:16 +08:00
    @Neveroldmilk 对啊, LZ 不是说 dst 长度为 7 个字节吗?
    adadada
        8
    adadada  
       2016-06-08 12:29:29 +08:00 via iPhone
    这个有给定尾端吗?
    ilotuo
        9
    ilotuo  
       2016-06-08 13:05:10 +08:00
    uint64_t *tmp = dst;
    tmp |=0xfff;
    tmp &=(~0x1000);
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5847 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 06:20 · PVG 14:20 · LAX 23:20 · JFK 02:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.