اطلاعیه

Collapse
No announcement yet.

ضرب 16 بیتی در مگا 16

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ضرب 16 بیتی در مگا 16

    سلام
    من میخام تو کدویژن دوتا متغیر 16 بیتی رو در هم ضرب کنم نمیدونم چطوری؟
    البته برنامه کدویژن این دوتا عدد رو در هم ضرب میکنه ولی متاسفانه 8 بیتی و برام خیلی مهمه که 16 بیتی باشه اخه تا 12 رقم اعشار برام مهمه!

    float FNsun (float d)
    {
    float rads=0.01745329025199433;
    float z;//for test
    float L,g;

    z=280.461 * rads + .9856474 * rads * d;

    ftoa(rads,12,s);
    puts(s);putchar(13);

    L = FNrange(z);
    g = FNrange(357.528 * rads + .9856003 * rads * d);
    return FNrange(L + 1.915 * rads * sin(g) + .02 * rads * sin(2 * g));
    };
    متغیر z برام مهمه حداقل تا 12 رقم اعشار دقیق باشه ولی متاسفانه تا 7 رقم درسته!
    انجام پروژه های برنامه نویسی اندروید
    [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    #2
    پاسخ : ضرب 16 بیتی در مگا 16

    :cry:
    انجام پروژه های برنامه نویسی اندروید
    [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    دیدگاه


      #3
      پاسخ : ضرب 16 بیتی در مگا 16

      چرا از double متغیر نمیسازی
      *یادگیری علم زمانی مشکل است که قبل از یادگیری آن را پیچیده تصور کنیم.
      *چرا فکر میکنیم مباحث مهم و پیشرفته و سطح بالا باید پیچیده باشند.

      دیدگاه


        #4
        پاسخ : ضرب 16 بیتی در مگا 16

        میزان دقت float ربطی به اینکه میکروی 8 بیتی یا 16 بیتی استفاده کنی نداره. دقت float تا حد 7 تا 8 رقم هست. فقط نوع double و long double بیش از این میزان (تا 15 رقم) دقت داره. این نوع هم تا جایی که میدونم در WinAVR ساپورت نمیشه و فقط IAR کامل ساپورتش میکنه. اما کدویژن رو نمیدونم.

        دیدگاه


          #5
          پاسخ : ضرب 16 بیتی در مگا 16

          سلام. من صبح به این تاپیک جواب دادم ولی نمیدونم کجا رفته!
          متغیر float تا 7 رقم و double تا 15 رقم دقت دارند که کدویژن double رو ساپورت نمیکنه و این یعنی اینکه خودتون باید زحمت برنامه نویسی رو بکشین.
          یه روش اینه که رقم های دو تا عدد رو داخل یه آرایه (رقم به رقم) ذخیره میکنید و با همون روشی که تو سوم دبستان یاد گرفتین دو تا عدد رو تو هم ضرب میکنید

          دیدگاه


            #6
            پاسخ : ضرب 16 بیتی در مگا 16

            نوشته اصلی توسط mojalan
            سلام. من صبح به این تاپیک جواب دادم ولی نمیدونم کجا رفته!
            متغیر float تا 7 رقم و double تا 15 رقم دقت دارند که کدویژن double رو ساپورت نمیکنه و این یعنی اینکه خودتون باید زحمت برنامه نویسی رو بکشین.
            یه روش اینه که رقم های دو تا عدد رو داخل یه آرایه (رقم به رقم) ذخیره میکنید و با همون روشی که تو سوم دبستان یاد گرفتین دو تا عدد رو تو هم ضرب میکنید
            توضیخت کافی نیست دوست گرامی
            اول عدد باید بر ده گان صدگان هزارگان و .... تقسیم بشه بعد
            هر کدوم رو باید تو یدونه خونه بزارید بعد بقول اقای mojalan از راه حل سوم دبستان حلش میکنی

            راه حل دوم:
            با اسمبلی دسترسی بیتی دارید در این زبان اساسا انواع داده بی معنی هستند بنابراین کل حافظه رو میشه کردش متغییری چند کیلوبایتی
            اگه از c استفاده میکنید کد اسمبلی قابلیت اجرا توی c رو داره
            موفق باشید :nice:
            *یادگیری علم زمانی مشکل است که قبل از یادگیری آن را پیچیده تصور کنیم.
            *چرا فکر میکنیم مباحث مهم و پیشرفته و سطح بالا باید پیچیده باشند.

            دیدگاه


              #7
              پاسخ : ضرب 16 بیتی در مگا 16

              نوشته اصلی توسط microjo
              توضیحت کافی نیست دوست گرامی
              اول عدد باید بر ده گان صدگان هزارگان و .... تقسیم بشه بعد
              هر کدوم رو باید تو یدونه خونه بزارید بعد بقول اقای mojalan از راه حل سوم دبستان حلش میکنی
              خیلی وقتا یه سر نخ کلی کار آدمو راه میندازه. اگه بیشتر بلد باشم و نیاز باشه حتما دریغ نمیکنم

              دیدگاه

              لطفا صبر کنید...
              X