![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c&c++
Thxubi
sssssssssssssssssssssd
展开
-
二分查找防止溢出的技巧
对于二分查找中的中点值选取 mid = (high + low) / 2; 更好的替换方式为: mid = low + (high - low) / 2; 因为前一种方式容易造成数据溢出,后一种则不会。 另外也可以用位运算的方式进行运算,看起来会高级一点。。。 // 只适用于正数 mid = (low >> 1) + (high >> 1) + (low & 1 & high); 右移相当于除二,如果两个数都是奇数的话还要加上一个1,注意位运算的优先级很低,要加原创 2022-01-12 18:08:22 · 863 阅读 · 0 评论 -
C模拟补码一位乘法(booth算法)
代码如下 #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_LENGTH 30 void bin_plus(int *A, int *B, int len); void bin_print(int *b, int len, char c, int loc); void bin_right(int* b, int len); int main(void) { int A.原创 2021-10-09 20:29:15 · 1218 阅读 · 0 评论 -
max和min用宏实现(C/C++)
max和min用宏实现(C/C++) 代码如下: #define max(a,b) (((a) > (b)) ? (a) : (b)); #define min(a,b) (((a) < (b)) ? (a) : (b)); 注意这里为什么要用括号 一个古老的优先级问题: 宏与函数不同的一点是宏只是简单的语句替换,而函数的实现则是在内存层面上的实现。 #define f(x) x*x...原创 2020-03-21 12:50:36 · 801 阅读 · 0 评论