I want to make low-level multiplication two digits with overflow checking, I know that c# has "checked block" like this:
checked {
int y = 2;
int x = 2147483647 * y;
Console.WriteLine(x);
}
But I'm using bit shiting operations, where "checked block" does not work.
So, how can I check overflow exception with such code?
int a = 2;
int b = 2147483647;
int result = 0;
while(b!=0){
if((b & 0x1) == 0x1){
result += a;
}
a = a << 1;
b = b >> 1;
}
System.out.println(result);
And my second question: Is standard multiply operation "*" a low-level operation?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…