a*2
2 楼
求int sqrt(int x)越界如何处理啊?
看到以前的一个帖子,觉得好像不太对, INT_MAX是2^31-1不是2^32,用(1<<16)还是
会越界,请问下该如何处理?
还有判断越界一般用什么方法?多谢了
看到以前的一个帖子,觉得好像不太对, INT_MAX是2^31-1不是2^32,用(1<<16)还是
会越界,请问下该如何处理?
还有判断越界一般用什么方法?多谢了
d*g
3 楼
两个6TB的硬盘,不打算做RAID。存文档和电影。希望文档能在两个硬盘各存一份,但
是电影就无所谓。请问各位在用黑白DSM的是怎么创建volume或者disk group的?谢谢
!
是电影就无所谓。请问各位在用黑白DSM的是怎么创建volume或者disk group的?谢谢
!
a*2
4 楼
自己顶一下
a*a
5 楼
两个硬盘折腾什么?
做过cron job,用rsync定时备份就是了。
不过在同一台机器上备份,不安全哟。得有份冷备份。
做过cron job,用rsync定时备份就是了。
不过在同一台机器上备份,不安全哟。得有份冷备份。
i*e
6 楼
Good observation.
You are correct, my previous post has bugs and did not address the overflow
issue properly.
Two methods to address:
i) find the upper bound of SQRT(INT_MAX) once and pass it into that function
. The upper bound can be found using a helper function that tests for
overflow. (ie, as soon as the condition when x > x*x is met, we knew x-1 is
the upper bound).
ii) declare the parameter x as unsigned int. Then initialize the upper bound
,
hi = min(n/2, (1<<16) - 1);
Hope this helps.
【在 a**********2 的大作中提到】
: 求int sqrt(int x)越界如何处理啊?
:
: 看到以前的一个帖子,觉得好像不太对, INT_MAX是2^31-1不是2^32,用(1<<16)还是
: 会越界,请问下该如何处理?
: 还有判断越界一般用什么方法?多谢了
You are correct, my previous post has bugs and did not address the overflow
issue properly.
Two methods to address:
i) find the upper bound of SQRT(INT_MAX) once and pass it into that function
. The upper bound can be found using a helper function that tests for
overflow. (ie, as soon as the condition when x > x*x is met, we knew x-1 is
the upper bound).
ii) declare the parameter x as unsigned int. Then initialize the upper bound
,
hi = min(n/2, (1<<16) - 1);
Hope this helps.
【在 a**********2 的大作中提到】
: 求int sqrt(int x)越界如何处理啊?
:
: 看到以前的一个帖子,觉得好像不太对, INT_MAX是2^31-1不是2^32,用(1<<16)还是
: 会越界,请问下该如何处理?
: 还有判断越界一般用什么方法?多谢了
i*e
8 楼
This should also work too :)
The observation is when it overflows, it must be the case M > M*M, so
readjust the upper bound to M-1 when that happens.
int mysqrt(int n) {
int L = 0;
int H = min(n/2, (1<<16));
while (L < H) {
int M = L+(H-L+1)/2;
int M_sqr = M*M;
if (M <= M_sqr && M_sqr <= n)
L = M;
else /* M > M_sqr || (M_sqr > n) */
H = M-1;
}
return L;
}
The observation is when it overflows, it must be the case M > M*M, so
readjust the upper bound to M-1 when that happens.
int mysqrt(int n) {
int L = 0;
int H = min(n/2, (1<<16));
while (L < H) {
int M = L+(H-L+1)/2;
int M_sqr = M*M;
if (M <= M_sqr && M_sqr <= n)
L = M;
else /* M > M_sqr || (M_sqr > n) */
H = M-1;
}
return L;
}
k*j
9 楼
or just test if M*M<0, if so then it overflows.
【在 i**********e 的大作中提到】
: This should also work too :)
: The observation is when it overflows, it must be the case M > M*M, so
: readjust the upper bound to M-1 when that happens.
: int mysqrt(int n) {
: int L = 0;
: int H = min(n/2, (1<<16));
: while (L < H) {
: int M = L+(H-L+1)/2;
: int M_sqr = M*M;
: if (M <= M_sqr && M_sqr <= n)
【在 i**********e 的大作中提到】
: This should also work too :)
: The observation is when it overflows, it must be the case M > M*M, so
: readjust the upper bound to M-1 when that happens.
: int mysqrt(int n) {
: int L = 0;
: int H = min(n/2, (1<<16));
: while (L < H) {
: int M = L+(H-L+1)/2;
: int M_sqr = M*M;
: if (M <= M_sqr && M_sqr <= n)
相关阅读
问一下笔记本内存win 7 task bar 问题啊怎么通过手机发传真?大家帮忙看看这个server的cpu刚才儿子不知道戳到键盘哪儿[合集] 我不知道现在VoIP有什么意义can anyone recommend a configuration for 64 bit computing?HTC HD2 (LEO) official (转载)Win 7 无法制作启动U盘?flash能做到什么复杂程度?台式机deal $339 (转载)想给WD TV Live装个无线adapter求助:3850显卡上的2个DVI口只有一个工作?[合集] 最近我的sony电脑的糟心事————求助版上高人,感激不尽hp的外壳划伤手了,能退换不?x61s lcd broken (Hydis ht121x01-101)请问前阵微软学生 Windows 7 Upgrade 29.99 的key,可以用在联想OEM windows7吗?请问1400的预算12月前会有啥好笔记本的i5 陪什么主板比较好?有人用Sapphire ATI HD 4670 Ultimate 么?