对数据的某位清零

    1. #include "stdio.h"
    2. typedef unsigned char uint8_t;
    3. void main(void)
    4. {
    5. uint8_t a = 0x0f;
    6. //对 a 的第一个bit清零
    7. a &= ~ ( 0x01<<0 );
    8. printf("%x\n",a);
    9. }

    对数据的某位置一

    1. #include "stdio.h"
    2. typedef unsigned char uint8_t;
    3. void main(void)
    4. {
    5. uint8_t a = 0xf0;
    6. //对 a 的第一个bit置1
    7. a |= 0x01<<0;
    8. printf("%x\n",a);
    9. }

    对数据的连续几个位清零

    1. #include "stdio.h"
    2. typedef unsigned char uint8_t;
    3. void main(void)
    4. {
    5. uint8_t a = 0x0f;
    6. uint8_t b = 0x03;
    7. //对 a 的第一个和第二个bit清零(只需要改变一下b的值)
    8. a &= ~ ( b<<0 );
    9. printf("%x\n",a);
    10. }

    对数据的连续几个位置一

    1. #include "stdio.h"
    2. typedef unsigned char uint8_t;
    3. void main(void)
    4. {
    5. uint8_t a = 0xf0;
    6. uint8_t b = 0x03;
    7. //对 a 的第一个和第二个bit置1(只需要改变一下b的值)
    8. a |= b<<0 ;
    9. printf("%x\n",a);
    10. }

    对数据的某位取反
    取反的意思就是,如果它是1取反就是0,如果它是0取反就是1。

    1. #include "stdio.h"
    2. typedef unsigned char uint8_t;
    3. void main(void)
    4. {
    5. uint8_t a = 0xf0;
    6. uint8_t b = 0x01;
    7. //对 a 的第一个bit取反(只需要改变一下b的值)
    8. a ^= b<<0 ;
    9. printf("%x\n",a);
    10. }