نوشته شده توسط
maria anders
من دو تا عدد دارم که این دو عدد از xor با دو تا عدد دیگه بدست آمده است .
a=u1 xor r1
b=u2 xor r2
هر دو متغیر من از نوع UINT64 می باشد , حالا من a=a*b می کنم .
عدد من بزرگتر از سقف متغیر می شه و من overflow دارم میخوام به اندازه max ؛ UINT نگهدارم و بقیه عدد را بیرون بریزم ...
چطور اینکار انچام بدم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
thanks.
عملیات ضرب رو توی یک try catch بذارین، اگه OverFlowException داد، مقدار a رو برابر با UInt64.MaxValue در نظر بگیرید.
در ضمن این کد در یک بلوک checked هم باید باشه تا نتیجه خراب نشه.
checked
{
try
{
a = a * b;
}
catch (OverflowException) {
a=UInt64.MaxValue;
}
}