V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
814084764
V2EX  ›  C

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

  •  
  •   814084764 · Jun 7, 2016 · 2877 views
    This topic created in 3621 days ago, the information mentioned may be changed or developed.

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

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

    *dst |= 0x00000000000FFF;
    *dst &= 0xFFFFFFFFFFEFFF;
    Neveroldmilk
        6
    Neveroldmilk  
       Jun 8, 2016
    @chiu 哥们,一个 16 进制数代表 4bit......
    chiu
        7
    chiu  
       Jun 8, 2016
    @Neveroldmilk 对啊, LZ 不是说 dst 长度为 7 个字节吗?
    adadada
        8
    adadada  
       Jun 8, 2016 via iPhone
    这个有给定尾端吗?
    ilotuo
        9
    ilotuo  
       Jun 8, 2016
    uint64_t *tmp = dst;
    tmp |=0xfff;
    tmp &=(~0x1000);
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1147 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 17:55 · PVG 01:55 · LAX 10:55 · JFK 13:55
    ♥ Do have faith in what you're doing.