昨天在解答同学的问题中,又接触了好久没碰的C中的位操作。在重接触的过程中,又理解了一遍计算机存储数据的细节,于是分享给大家看一下。

让我们先看一下题目:编写一个程序,输入两个整数i、j,如果j的值大于0,则将i循环左移j位;

如果j的值小于0,则将i循环右移j位,最后输出i的值。

输入输出格式要求:

输入格式:i j回车

i j 均用int类型存储。

只输出运算结果,请不要输出其他字符

例如:

输入:3 10回车

输出:3 3072

输入:-65535 -2回车

输出:2147467264

首先,我们要明确<>移位操作是会溢出的,比如01111100,左移三位后为11100000,它的1的个数是会减少的。

而循环左移得到的应为11100011。所以我们要解决的就是如何补回溢出的。

为了节约大家时间,先贴代码,如果看懂 下面就不用细看了。

1.注意格式要求输入int类型,但是有符号整数的右移补位,如果是负数,根据编译系统的不同既有可能是算术右移,也有可能是逻辑右移,即补偿的有可能是0,也有可能是1。所以要化成无符号整数,进行运算。

2.有可能输入的j大于int的位数,这里即为32。所以要进行越界检查。

3.这里实现的关键是要对溢出的进行补偿,不妨这样想象,<

那就是|上相反的位移操作32-j位。因为是一个环,所以左移n位就是右移(长度-n)位。这样溢出的就会有相应补偿。

4.最后要记得化为int类型。

c语言循环左移程序,C语言中关于循环左移和循环右移相关推荐

  1. 趣味c语言代码,趣味程序C语言

    <趣味程序C语言>由会员分享,可在线阅读,更多相关<趣味程序C语言(36页珍藏版)>请在人人文库网上搜索. 1.趣味程序导学C语言,你玩过电脑游戏吗?,你喜欢电脑游戏吗?,电脑 ...

  2. c语言画猪程序,C语言画小猪佩奇(转载)

    C语言画小猪佩奇 分享下如何用 C 语言画小猪佩奇 使用带符号距离场(signed distance field, SDF)表示圆形: 沿用这个方法表示形状,但这次我们想利用 ASCII 字符|/=\ ...

  3. c语言编写天气预报程序,在Deno中构建一个命令行天气预报程序

    在本文中,我将通过安装Deno运行时,并创建一个命令行天气程序,该程序将把一个城市名称作为参数,并返回未来24小时的天气预报. 要为Deno编写代码,我强烈建议将Visual Studio Code与 ...

  4. c语言机票预定程序,c语言程序设计报告飞机票预订系统.doc

    目录 TOC \o "1-3" \h \z \u HYPERLINK \l _Toc1220 目录 PAGEREF _Toc1220 i HYPERLINK \l _Toc6278 ...

  5. c语言电子日历程序,c语言程序设计电子日历

    c语言程序设计电子日历 目 录 一.设计思路 二.功能实现详细设计 三.测试结果分析 四.用户手册 五.设计体会 一.设计思路: If语句: 判断该年是否为闰年,判断一年是否为闰年需要符合下面二者之一 ...

  6. c语言行计数程序,C语言非常简单的字符统计程序50行

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 该程序用于实现linux系统中wc命令的最简单模式 wc 命令用于统计文件中字符信息. [xx@localhost 1.5]$ wc 01.c 02.c ...

  7. c语言编写modbus程序,C语言编写modbus协议

    <C语言编写modbus协议>由会员分享,可在线阅读,更多相关<C语言编写modbus协议(23页珍藏版)>请在人人文库网上搜索. 1.include / 字地址 0 - 25 ...

  8. c语言商场收款程序,c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式...

    c语言 如何用switch语句编写一个有关商场购物金额优惠的选择程式以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! c语 ...

  9. c语言中用temp程序,e__temp_c语言第02章作业.doc

    e__temp_c语言第02章作业 C语言程序设计第02章作业 单选题 1.假定有以下变量定义:int k=7,x=12; 则能使值为3 的表达式是_______. A)x%=(k%=5) B)x%= ...

最新文章

  1. Lync 小技巧-51-Lync 2013-不加域-客户端-1-下载-证书-信任链
  2. JMS中queue和topic区别
  3. 【性能优化】 之AWR 报告分析
  4. Signal Slot in Qt
  5. 回调函数与PHP实例
  6. fcntl函数之文件锁 F_SETLKW
  7. win10查看上次开机时间
  8. L1-026 I Love GPLT
  9. 谋职中的战术与战略——《程序员求职第一书》书评
  10. 走进WPF之开发类似Visio软件
  11. 使用Struts标签的基本配置
  12. Educational Codeforces Round 7 F. The Sum of the k-th Powers(拉格朗日插值)
  13. Github 搜索技巧,快速找到好资源
  14. 求职必看:后端工程师就业公司选择解析
  15. exoplayer的media2扩展
  16. 为什么要学数学?因为它真的没用啊!
  17. apisix插件之修改返回body
  18. POI-Excel导入与导出
  19. 华为设备 配置成为FTP服务器/客户端
  20. Flutter fish redux入门

热门文章

  1. Web登录使用RSA对密码进行加密解密过程
  2. IntelliJ IDEA 2018 注册码
  3. Java博客系统halo的搭建
  4. 物联网专业未来没有前途了吗?
  5. linux进程的使用xps,linux kernel 网络协议栈之xps特性详解
  6. 自定义excel表格(生成报价单,含多种excel样式调整)
  7. 【C#】获取汉字拼音首字母和全拼
  8. AutoHotkey2的helloworld
  9. 使用c#封装海康SDK出现无法加载 DLL“..\bin\HCNetSDK.dll”: 找不到指定的模块
  10. UE4导入PMX模型记录