求A mod B

要求

B必须是2的次方

方法

A mod B = A & (B - 1)

程序

#include <stdio.h>

//10 mod 8 = 2
int addM(int a,int b)
{
	return a & (b-1);  // mod(2^31-1)
}
int main()
{
	int result;
	int a=10;
	int b=8;
	result = addM(a,b);
	printf("%d mod %d = %d\n",a,b,result);
	return 0;
}

原理

求教~

求 A mod (2^31 -1)

方法1

result = (A  & 0x7FFFFFFF) + 1;

参考ZUC代码

求解原因?

方法2

求mod运算

result = (A & 0x7FFFFFFF) + (A >> 31)

参考ZUC国密标准

求解原因?

扩展:求 ab mod (2^31 -1)

求mod运算

参考

 1、如何用C中的运算符求mod(2的次方)?

 2、ZUC算法实现

相关文章:

  • 2022-12-23
  • 2021-09-14
  • 2021-11-03
  • 2021-08-19
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2021-06-21
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案