#include<stdio.h>
typedef unsigned int us;
/*:10/3=3……1令商为s=0的和,余数为被除数a的差的和,i在32~2位时,10>>i都是小于除数的,不进行操作,但是i--;i=1,(a==10)>>1=5>3(除数)……0:s=s+1<<1=2;a=a-3<<1=4;i=0,(a==4)>>0=4>3(除数)……0:s=s+1<<0=3;a=a-3<<0=1;得商为3,余数为1;30/4=7……2;同理 i在32~3时,30>>i都是小于除数的,不进行操作,i--;i=2,(a=30)>>2=7>4(除数)……2:s=s+1<<2=4;a=a-4<<2=14;i=1,(a==14)>>1=7>4(除数)……0:s=s+1<<1=6;a=a-4<<1=6;i=0,(a==6)>>0=6>4(除数)……0:s=s+1<<0=7;a=a-4<<0=2;得商为7,余数为2;综述,总是存在在这样得关系,可求出商和余数; */
int main()
{us a,b;// a/b us s=0;scanf("%d%d",&a,&b);int i;for(i=32;i>=0;i--)//int 为32位,那么可移位范围即为0~32; {if ((a>>i)>=b){s=s+(1<<i); us q=~(b<<i)+1;// a=a-(b<<i)变成a=a+q,因为不能用减法; //事实上这里是a=a-(b<<i)(按照例子的想法来做)但因为只能用加法做//而在加法器里,当sub=1,就会对(-b)进行~b+1;然后a-b=a+~[b]+1,所以变减法为加法 //即-(b<<i)变成~(b<<i)+1;即是q; a=a+q;//a=a-(b<<i)变化而来; }  }printf("商:%u\n",s);printf("余数:%u\n",a);return 0;
} 

用无符号加法和移位实现除法相关推荐

  1. 位向量 补码与无符号 加法与乘法 CSAPP学习笔记

    计算机中用位来表示整数,一种方式只能表示非负数,一种可以表示有符号数. 无符号数编码: 补码编码: 由上面的定义可以知道补码与无符号之间的对应关系(见下式),最高位为0时,补码与无符号表示是一样的,而 ...

  2. 编程实现 无符号加法溢出判断

    //无符号加法溢出判断 #include<iostream> using namespace std; int uadd_ok(unsigned x,unsigned y) {unsign ...

  3. 分析轮子(二)- ,, (左移、右移、无符号右移)

    前言:写 分析轮子(一)-ArrayList.java 的时候看到源码中有 int newCapacity = oldCapacity + (oldCapacity >> 1); 这样的代 ...

  4. 假设我们在对有符号值使用补码运算的32位机器人运行代码。对于有符号值使用的是算术右移,而对于无符号值使用的是逻辑右移

    假设我们在对有符号值使用补码运算的32位机器人运行代码.对于有符号值使用的是算术右移,而对于无符号值使用的是逻辑右移.变量的声明和初始化如下: int x = foo(); //任意值 int y = ...

  5. 无符号有符号乘法_【编译笔记】变量除以常量的优化(一)——无符号除法

    注:本文中的算法来自于 Division by Invariant Integers using Multiplication [1]. 众所周知,编译器可以把变量除以常量优化为乘法和移位. 例如: ...

  6. 位操作符:位与、|位或、^异或、~求反、左移位、带符号右移位、无符号右移位...

    . 操作符 名称 实例(例中使用字节) 描述 & 位与 10101110 & 10010010 得到10000010 两个相应位上比特如果都为1,则执行 与 操作会得到1 | 位或 1 ...

  7. 【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】

      第一题 #include<stdio.h>  int main()  {  unsigned int a=6;  int b=-20;  printf("%d\n" ...

  8. 无符号定点数加法运算的VHDL描述

    无符号定点数加法运算的VHDL描述 使用VHDL描述定点运算时添加运算支持的详细步骤 定位到Xilinx的安装路径下,然后找到 D:\Xilinx\Vivado\2021.1\scripts\rt\d ...

  9. java 移位 简书_js,java中的 无符号右移位符,左移位符,有符号右移位符

    移位运算就是对二进制进行有规律低移位.移位运算可以设计很多奇妙的效果,在图形图像编程中应用广泛. "< "< 把数字 5 向左移动 2 位,则返回值为 20. cons ...

最新文章

  1. 使用Silverlight for Embedded开发绚丽的界面(2)
  2. boost::gil模块沿 x 轴计算梯度的方法的示例
  3. 福利好礼现金大奖等你来→首届 .NET Conf China Hackathon 火热报名中!
  4. 渗透测试入门11之一次完整的渗透测试实验
  5. java根据系统时间拼凑文件名字
  6. zabbix详解(十二)——zabbix监控MySQL主从状态实战
  7. 在ubuntu下怎么安装和使用Github
  8. 用强化学习来玩Atari游戏(基于Tensorflow的深度Q学习模型)
  9. 制作地图的那些事(二)——制图之符号制作
  10. 判断一个三位数是否为水仙花数
  11. JQ获取本地JSON文件中的数据 模拟分页效果 - 初学
  12. windows 平台下curl使用报错: (3) [globbing] unmatched close brace/bracket in column 13
  13. 学计算机需要自控力,上班族,自控力差,怎样才能静下心好好学习?
  14. html页面放大缩小样式不变,网页缩小放大后错位的解决方法
  15. jtag的emu0与emu1_谁特么告诉你EMU就是1分钱就能赚75美元?
  16. vscode win10笔记本 蓝屏_联想拯救者Win10蓝屏0xc000000d的解决办法
  17. 2.Go语言环境配置
  18. 协方差矩阵和相关矩阵的关系
  19. Koordinator 1.0 正式发布:业界首个生产可用、面向规模场景的开源混部系统
  20. ubuntu下PPPOE环境搭建

热门文章

  1. Android中WebView使用6,js调java实现播放视频
  2. Html里canvas签名板签名,签字内容还可以手动放大缩小移动
  3. 「精品」手绘游戏原画绘画学习的技巧
  4. i710700k和r73800x哪个好-对比性能有什么区别
  5. 怎么禁用计算机上的自动播放,Win7系统如何关闭自动播放?
  6. 京东api获取商品详情电商接口
  7. Outlook 2003 的桌面提醒(Desktop Alerts)功能
  8. 初学opencv/基本操作
  9. win7显示未识别的网络_win7系统显示:未成功关闭,进入安全模式也不行
  10. tomcat9.0简明安装教程