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

简介: 问题描述编写一个函数rightrot(x, n),该函数返回将x循环右移n位所得到的值。

问题描述

编写一个函数rightrot(x, n),该函数返回将x循环右移n位所得到的值。

这个问题的理解是: 将x进行右移n位,每次移动都将右侧的最后一位移到左侧第一位。

问题分解

  • 主函数main
  • 核心函数 rightrot(x, n)。 这道题需要我们留心观察右移的规律,首先常规的右移很好表示,因此难点在如何表示右侧的最后一位移到左侧的第一位。通过分析,我们可以知道需要判断x的最右端位是1还是0,是1就进行特殊运算,若是0 ,直接右移即可。算法描述可以为:

    1. 当x的最后一位为0, 则只要进行常规的右移1位即可,即x >> 1
    2. 当x的最后一位为1,则移动后 x的左侧第一位变为1,其他位进行正常右移,即 (x >> 1) | ~(~0 >> 1)
    3. 按照i、ii执行n步即可

代码实现

#include<stdio.h>

unsigned rightrot(unsigned x, int n);
​
int main()
{
​
        int n;
​
        unsigned x, r;
​
        n = 1;
​
        x = 74;
​
        r = rightrot(x, n);
​
        printf("The result is: %u  \n", r);
​
        return 0;
}
​
​
​
unsigned rightrot(unsigned x, int n)
{
    while (n-- > 0)
    {
​
        if ((x & 1) == 1)  //如果最右端位为 1
​
           x = (x >> 1) | ~(~0 >> 1);
       else 
           x = (x >> 1);
    }
    return x;
}
目录
相关文章
|
人工智能 IDE JavaScript
Comate:百度智能云推出的基于大模型的代码编写助手
【2月更文挑战第13天】Comate:百度智能云推出的基于大模型的代码编写助手
251 2
Comate:百度智能云推出的基于大模型的代码编写助手
|
4月前
|
传感器 人工智能 算法
《具身智能机器人:自修复材料与智能结构设计的前沿探索》
在具身智能机器人的研发中,自修复材料与智能结构设计是关键领域。自修复材料通过微胶囊或形状记忆效应实现损伤自我修复,提升机器人在极端环境下的生存能力;智能结构设计则赋予机器人灵活可变的形态,使其适应复杂任务需求。然而,当前技术仍面临修复效率、性能平衡及结构控制等挑战。随着多学科融合进步,未来机器人有望实现高效自愈与高度智能化结构变化,推动科技和社会发展。
213 32
5G 物理资源 |带你读《5G空口特性与关键技术》之八
基站信道带宽是指基站侧上下行所支持的单个 NR 射频载波。同一频段下,支持不同的 UE 信道带宽。在基站信道带宽范围内,UE 信道带宽可以灵活配置。UE 的 BWP 的信号等于或者小于 RF 载波的载波资源块数时,基站就能够在任何载波资源块上收发 UE 的 1 个或者多个 BWP 的信号。
5G 物理资源  |带你读《5G空口特性与关键技术》之八
|
9月前
|
人工智能 编解码 自动驾驶
MagicDriveDiT:华为联合港中文等机构推出的自动驾驶高分辨率长视频生成方法
MagicDriveDiT是由华为联合港中文等机构推出的一种新型自动驾驶高分辨率长视频生成方法。该方法基于DiT架构,通过流匹配增强模型的可扩展性,并采用渐进式训练策略处理复杂场景。MagicDriveDiT能够生成高分辨率的长视频,提供对视频内容的精确控制,适用于自动驾驶系统的测试与验证、感知模型训练、场景重建与模拟以及数据增强等多个应用场景。
220 17
MagicDriveDiT:华为联合港中文等机构推出的自动驾驶高分辨率长视频生成方法
|
机器学习/深度学习 人工智能 运维
运维的未来之路:自动化与智能化的融合
【8月更文挑战第15天】在数字化时代的浪潮下,运维领域正经历一场深刻的变革。从手工操作到自动化流程,再到如今智能技术的融入,运维工作正在逐步摆脱繁重而重复的任务,向着更加高效、智能的方向发展。本文将探讨自动化与智能化技术如何重塑运维工作的面貌,以及这一趋势对运维人员技能要求的影响。
238 0
|
10月前
|
人工智能 小程序 前端开发
【一步步开发AI运动小程序】六、人体骨骼图绘制
随着AI技术的发展,阿里体育等公司推出的AI运动APP如“乐动力”、“天天跳绳”等,使云上运动会、线上健身等概念广受欢迎。本文将引导您从零开始,利用“云智AI运动识别小程序插件”,在小程序中实现类似功能,包括人体骨骼图的绘制原理及其实现代码,确保骨骼图与人体图像精准重合。下篇将继续介绍运动分析方法。
|
监控 网络架构 负载均衡
|
SQL 监控 分布式数据库
【解锁数据库监控的神秘力量!】OceanBase社区版与Zabbix的完美邂逅 —— 揭秘分布式数据库监控的终极奥秘!
【8月更文挑战第7天】随着OceanBase社区版的普及,企业广泛采用这一高性能、高可用的分布式数据库。为保障系统稳定,使用成熟的Zabbix监控工具对其进行全方位监控至关重要。本文通过实例介绍如何在Zabbix中配置监控OceanBase的方法,包括创建监控模板、添加监控项(如TPS)、设置触发器及图形展示,并提供示例脚本帮助快速上手。通过这些步骤,可以有效监控OceanBase状态,确保业务连续性。
267 0
|
API 数据库 数据库管理
Flask Web开发基础:数据库与ORM实战
该文介绍了如何使用 Flask、SQLAlchemy 和 SQLite 实现数据库操作。首先,通过创建虚拟环境和安装 flask-sqlalchemy(版本2.5.1)及 sqlalchemy(版本1.4.47)来设置环境。接着,配置数据库URI,定义User和Movie模型类表示数据库表,并通过db.create_all()创建表。文章还展示了如何插入、查询、更新和删除记录,强调了db.session.commit()在保存更改中的关键作用。查询涉及filter、order_by等方法,提供了一系列示例。
434 1