C程序设计语言第二版习题2-7

简介: 编写一个函数 invert(x, p, n),该函数返回对 x 执行下列操作后的结果值:将 x 中从第 p 位开始的 n 个(二进制)位求反(即,1 变成 0,0 变成 1),x 的其余各位保持不变。

问题描述

编写一个函数 invert(x, p, n),该函数返回对 x 执行下列操作后的结果值:将 x 中从第 p 位开始的 n 个(二进制)位求反(即,1 变成 0,0 变成 1),x 的其余各位保持不变。

问题分解

  • 主函数main
  • 工具函数 setbits(x,p,n,y), 算法解析可以看上一篇文章
  • 核心函数 invert(x, p ,n)。 这道题其实不难,只要联想一下2-6解决的问题,即可快速得到答案。我们来回顾一下2-6解决的问题:编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。 可以发现,我们只要拿到一个y,满足y的最右边的n位的值正是 x 中需要求反的位即可。因此算法描述可以为:

    1. 求得x的指定位求反并右移至尾部: (~x >> (p - n + 1)) & ~(~0 << n)
  1. 调用setbits 即可求得

代码实现

#include<stdio.h>
​
unsigned setbits(unsigned x, int p, int n, unsigned y);
unsigned invert(unsigned x, int p, int n);
​
int main()
{
  unsigned x, r;
  int p, n;
  x = 21;
  p = 4;
  n = 3;
  r = invert(x, p, n);
  printf("The result is: %u \n", r);
  return 0;
}
​
unsigned setbits(unsigned x, int p, int n, unsigned y)
{
  return (x & (~(~(~0 << n) << (p - n + 1)))) | ((y & ~(~0 << n)) << (p - n + 1));
}
​
​
unsigned invert(unsigned x, int p, int n)
{
    unsigned y;
    y = (~x >> (p - n + 1)) & ~(~0 << n); 
    return setbits(x, p, n, y);
}
目录
相关文章
|
安全 网络协议 网络安全
端口转发:解锁网络访问的新维度
端口转发技术,简化网络数据流,用于家庭至企业服务器场景。它隐藏内部网络服务,提供远程访问、个人网站公开、NAT穿透及安全的VPN连接。设置涉及路由器管理界面,添加转发规则,但需注意安全风险,仅开放必要端口并加强内部安全措施。了解和善用端口转发,提升网络服务可达性与安全性。
1613 5
|
8月前
|
人工智能 安全 搜索推荐
AI 智能体开发中的技术难点
2026年,AI智能体开发已升级为系统工程:面临记忆精准唤醒、长任务规划容错、多Agent协同、具身操作安全及成本-延迟-智能“不可能三角”五大核心挑战。告别简单Prompt,迈向高可靠、多模态、强安全的工程化落地。(239字)
|
9月前
|
人工智能 数据可视化 安全
企业如何应用BI系统(2026年1月最新)
截至2026年,全球BI市场达432亿美元,中国领跑亚太增长。瓴羊Quick BI以AI增强分析为核心,支持自然语言查询、自动洞察、根因分析与预测模拟,预置行业模板,5分钟搭建看板,湖仓一体架构保障数据可信,覆盖全员用数与企业级安全合规,助力企业从“看过去”迈向“预未来”的智能决策。(239字)
|
人工智能 自然语言处理 API
电商API技术文档编写规范白皮书:方法论与行业实践
本文系统阐述电商API接口文档的编写规范与最佳实践,涵盖结构设计、技术语言、开发者体验、版本控制及质量保障等方面,助力企业提升开发效率,构建开放共赢的电商生态。
|
9月前
|
人工智能 自然语言处理 算法
创新场景丨众调科技:打造AI引擎,加速汽车全链路智能升级
众调科技的擎天大模型,正在为汽车行业带来前所未有的变革,推动汽车行业迈向AI大模型时代。这不仅提升了汽车行业营销与培训领域的效率与产能,更在推动整个行业智能化、电动化、网联化的发展中发挥了举足轻重的作用。
|
人工智能 自然语言处理 前端开发
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
DeepSite是基于DeepSeek-V3模型的在线开发工具,无需配置环境即可通过自然语言描述快速生成游戏、网页和应用代码,并支持实时预览效果,显著降低开发门槛。
2238 93
DeepSite:基于DeepSeek的开源AI前端开发神器,一键生成游戏/网页代码
|
弹性计算 自然语言处理 测试技术
30分钟私有部署Deepseek-R1和V3,轻松拥有企业专属超大模型
阿里云计算巢推出了基于 ECS镜像、Vllm和Ray集群的超大模型一键部署方案。该方案通过预置标准化环境的ECS镜像,结合自动化云资源编排模板(如Ros模板),将Deepseek-R1和Deepseek-V3的私有化部署流程简化为一键操作。用户无需深入理解底层技术细节,即可在 30分钟内 快速完成模型环境搭建与服务启动,真正实现“开箱即用”的企业级超大模型服务。
|
开发工具 git
10分钟搭建自己的blog网站
10分钟搭建自己的blog网站
711 6
10分钟搭建自己的blog网站
|
JSON 生物认证 API
harmony-utils之JSONUtil,JSON工具类
harmony-utils之JSONUtil是一款HarmonyOS平台下的高效JSON处理工具类,支持JSON字符串与对象、数组、Map之间的相互转换,简化数据解析与操作,提升开发效率。
434 0
|
机器学习/深度学习 自然语言处理 算法
长序列中Transformers的高级注意力机制总结
Transformers在处理长序列时面临注意力分散和噪音问题,随着序列增长,注意力得分被稀释,影响相关上下文表示。文章探讨了序列长度如何影响注意力机制,并提出了多种解决方案:局部敏感哈希减少计算需求,低秩注意力通过矩阵分解简化计算,分段注意力将输入分割处理,层次化注意力逐级应用注意力,递归记忆增强上下文保持,带有路由的注意力机制动态调整信息流,以及相对位置编码改进序列理解。这些方法旨在提高Transformer在长序列任务中的效率和性能。
1279 3

热门文章

最新文章