نمایش نتایج 1 تا 9 از 9

نام تاپیک: ضرب دو عدد UInt64

  1. #1

    Lightbulb ضرب دو عدد UInt64

    من دو تا عدد دارم که این دو عدد از xor با دو تا عدد دیگه بدست آمده است .
    a=u1 xor r1
    b=u2 xor r2
    هر دو متغیر من از نوع UINT64 می باشد , حالا من a=a*b می کنم .
    عدد من بزرگتر از سقف متغیر می شه و من overflow دارم میخوام به اندازه max ؛ UINT نگهدارم و بقیه عدد را بیرون بریزم ...
    چطور اینکار انچام بدم؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
    thanks.

  2. #2

    نقل قول: ضرب دو عدد UInt64 ??????????????????

    سلام دوست عزیز این دستور بزرگترین مقدار uint64 رو نشون میده.

    MessageBox.Show(UInt64.MaxValue.ToString());


    موفق باشید./

  3. #3

    نقل قول: ضرب دو عدد UInt64 ??????????????????

    نقل قول نوشته شده توسط The Life مشاهده تاپیک
    سلام دوست عزیز این دستور بزرگترین مقدار uint64 رو نشون میده.

    MessageBox.Show(UInt64.MaxValue.ToString());


    موفق باشید./

    ممنون از پاسختون , ولی من اینو می دونم ..چطور می تونم مشکل این overflow رو حل کنم ؟ چطور می تونم اون قسمتی که مجاز است را بردارم و بقیه را دور بریزم ...

  4. #4
    کاربر دائمی آواتار ji ming u
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    پس کوچه های شهر
    پست
    316

    نقل قول: ضرب دو عدد UInt64 ??????????????????

    از متغییرdecimal استفاده کن

  5. #5

    نقل قول: ضرب دو عدد UInt64 ??????????????????

    نقل قول نوشته شده توسط 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;
    }
    }

  6. #6

    نقل قول: ضرب دو عدد UInt64 ??????????????????

    من نمیخوام که اگه عدد من بزرگتر از UINT64 شد , maxاین عدد را قرار بده , می خوام که اون مقداری که محازه (به اندازه UIN64 ) هست را نگهداره و Over Flow بقیه را بیرون بریزه .......برام خیلی مهم .....


    نمی دونم که منظورم متوجه می شید یا نه ....؟؟؟





    نقل قول نوشته شده توسط صابر مشاهده تاپیک
    عملیات ضرب رو توی یک try catch بذارین، اگه OverFlowException داد، مقدار a رو برابر با UInt64.MaxValue در نظر بگیرید.
    در ضمن این کد در یک بلوک checked هم باید باشه تا نتیجه خراب نشه.

    checked
    {
    try
    {
    a = a * b;
    }
    catch (OverflowException) {
    a=UInt64.MaxValue;
    }
    :




    }
    آخرین ویرایش به وسیله maria anders : چهارشنبه 12 بهمن 1390 در 12:45 عصر

  7. #7

    نقل قول: ضرب دو عدد UInt64 ??????????????????

    پس در این صورت checked رو به unchecked تبدیل کنید. در نهایت در متغیر a اون مقداری خواهد بود که شما دنبالش هستین.

  8. #8

    نقل قول: ضرب دو عدد UInt64 ??????????????????

    واقعا با این کار , من اون جوابی را که می خوام بدست می آورم ؟؟؟؟



    نقل قول نوشته شده توسط صابر مشاهده تاپیک
    پس در این صورت checked رو به unchecked تبدیل کنید. در نهایت در متغیر a اون مقداری خواهد بود که شما دنبالش هستین.

  9. #9

    نقل قول: ضرب دو عدد UInt64

    امتحان کنید!
    مثلاً در این برنامه:

    UInt64 a = 10;
    UInt64 b = UInt64.MaxValue ;
    unchecked { a = a + b; }

    در متغیر a مقدار ۹ قرار می‌گیرد که می‌توانید آن را با ۱ جمع کنید و به عدد مورد نظرتان برسید.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •