【C语言】实现对一个8 bit数据(unsigned char类型)的指定位(例如第n位)的置0或者置1操作,并保持其他位不变。

本文介绍了一个用于操作8bit数据特定位(置0或置1)的C语言函数实现。该函数通过指针传递参数,并确保输入的有效性,能够根据指定标志修改目标位而不影响其他位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 功能:实现对一个8 bit数据(unsigned char类型)的指定位(例如第n位)的置0或者置1操作,并保持其他位不变。
  2. 函数原型:void bit_set(unsigned char *date, unsigned char position, int flag)
  3. date是一个8bitunsigned char类型的数据,position是指定位,flag是指定位置0还是置1.
  4. 还有几点是需要注意的,就是指针传参,一定要断言。
  5. 也要判断输入的值是否有误。
  6. 函数的具体思路就是先找到指定位,然后把指定位拿出来与flag进行比较,如果一致,则不改动,否则就改变。
  7. 最后输出从低地址向高地址位输出。
#include<stdio.h>
#include<assert.h>

void bit_set(unsigned char *date, unsigned char position, int flag)
{
    assert(date);
    if (position > 8 || position < 1 || (flag != 0 && flag != 1))
    {
        printf("输入有误!\n");
    }
    if (flag != (*date >> (position - 1)) & 1)
    {
        *date ^= 1 << (position - 1);
    }
    for (int i = 7; i >= 0; i--)
    {
        printf("%d", (*date >> i) & 1);
    }
    printf("\n");
}

int main()
{
    unsigned char date ;
    int flag ;
    unsigned char position ;
    printf("请输入数据和指定位和指定位置0还是1:>");
    scanf_s("%d %d %d", &date, &position, &flag);
    bit_set(&date, position, flag);
    system("pause");
    return 0;
}

这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值