当前位置: 首页 > news >正文

用算术右移操作实现整型数的除法

一个带符号整型数x(二进制表示为w位),除以2^{k}, 0\leq k< w。整数除法总是舍入到0。结果与x算术右移k位的结果相等。不过,当x< 0时,x需要加偏置量2^{k}-1,然后算术右移k位,才能实现向0舍入。把x强制转换位浮点型,直接用除法得到结果比较,就是把小数部分舍掉了。

源程序

int divus(int x,int n);

void main()
{
    int x, y, k, rx, rxx, ry, ryy;
    float sx, sy;
    x=12340; y=-12340;
    k=4;
    rx=x/(2<<(k-1));    //rx=x/2^{k}
    rxx=divus(x,k);
    sx=(float)x/(2<<(k-1));
    ry=y/(2<<(k-1));  //ry=y/2^{k}
    ryy=divus(y,k);
    sy=(float)y/(2<<(k-1));    
}

int divus(int x,int n)   //将x右移n位
{
    int bias;
    if(x>=0) 
        return  x>>n;
    else 
        bias=2<<(n-1)-1;
      return (x+bias)>>n;
}
执行结果

rx=rxx=0x0303=771, sx=771.25;

ry=ryy=0xFCFD=-771, sy=-771.25。

相关文章:

  • 【git】工作流实战:从本地仓库到远程仓库,git pull 与git rebase使用讲解,案例解析
  • C++,设计模式,【工厂方法模式】
  • Openssl之SM2加解密命令
  • 【个人记录】openEuler安装K3S并配置为GPU节点
  • python高效使用06_while_True和while_1哪个效率更高
  • OpenCV形态学操作
  • Windows 10事件查看器
  • PINN求解一维burgers方程
  • 【AB-01】 AUTOSAR Builder软件安装
  • C++:从拷贝构造函数到深浅拷贝
  • 如何修改Windows系统Ollama模型存储位置
  • 第三章 组件(7)- 布局与Sections
  • Java——面向对象编程
  • 使用多态来替换条件语句
  • 【嵌入式Linux应用开发基础】进程间通信(3):共享内存
  • 遗传算法与深度学习实战系列,自动调优深度神经网络和机器学习的超参数
  • 完美转发使用
  • 现代任务调度系统架构深度解析——以TaskSchedulerController为核心的弹性任务管理方案
  • Spring AI集成Ollama调用本地大模型DeepSeek
  • Spring AOP
  • 中 网站建设 扬州/seo体系百科
  • 一个新网站怎么做seo/百度无锡营销中心
  • 做赌博网站刷单违法吗/seo营销推广服务公司
  • 163企业邮箱官网入口/武汉seo公司排名
  • 广州番禺区房价/厦门零基础学seo
  • 汽车案例网站/小升初最好的补课机构排行榜