负数的除法和右移的区别

您所在的位置:网站首页 c语言负数怎么运算 负数的除法和右移的区别

负数的除法和右移的区别

2024-07-10 23:59| 来源: 网络整理| 查看: 265

A和B两个函数的结果是相同的,求M和N.

#define M ? #define N ? int A(int x,int y) { int result = 0; result = x*M+y/N; return result; } int B(int x,int y) { int t = x; x>1得到的是-2

其实这是因为除法是向0取整,而右移位是向负取整

-3/2=-1.5=-1(向0取整),-3>>1=-1.5=-2(向负取整);

如果我们需要右移达到的效果和除法一样,可以采取下列公式:

假设除数为2^N,负数x的除法可以用以下方法来代替:

(x + 2^N - 1) >> N

在这道题里就是(x+2^3-1)>>3 =(x+7)>>3

也就是说A函数中的y/N和B函数中的if(y>=3; 取到的效果是一样的,都是y/8,所以N为8



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3