اطلاعیه

Collapse
No announcement yet.

کار کردن با متغیر های بزرگ

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

    کار کردن با متغیر های بزرگ

    سلام
    کسی می دونه چطور میتونیم داخل برنامه با اعداد بزرگ کار کنیم؟
    مثلا 1000 تا عدد 3 بایتی را با هم جمع کنیم؟
    بزرگترین متغیری که تو کامپایلر ها دیدم 4 بایتی هست ولی اگه بخواهیم متغیر بزرگتر داشته باشیم چی کار باید بکنیم.
    در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

    1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
    2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
    3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

    #2
    پاسخ : کار کردن با متغیر های بزرگ

    بستگی به کامپایلر و سخت افزار داره.
    اگه با زبان C کار می کنید، یه راه حل اینه که از متغیر float استفاده کنید. البته ممکنه یکمی توی نتیجه خطا داشته باشید ولی کدنویسیش ساده می شه؛ البته زمان اجرای برنامه هم طولانی تر میشه.
    یا اینکه می تونید یه نوع داده جدید به صورت struct تعریف کنید که شامل دو تا 4 بایتیه و عملاً بیانگر یه داده 8 بایتی می شه و عملیات جمع، تفریق، ضرب و تقسیم این نوع داده جدید رو خودتون به صورت تابع بنویسید و توی برنامه ازش استفاده کنید. این راه حل برای تمام زبانهای برنامه نویسی هم قابل اجراست.
    توی ++C که با تعریف کلاس جدید و متدهاش اصاً از این دردسرها نخواهید داشت.
    بیایید با Google آشتی کنیم!

    دیدگاه


      #3
      پاسخ : کار کردن با متغیر های بزرگ

      نه تو c++ بلکه تو هیچ زبانی با برنامه نویسی مشکلی نیست.
      منظور من تکنیک و راه کاری ساده تر از برنامه نویسی بود.
      راستی یادم رفت بگم که نوع float هم 4 بایتی هست.
      می خوام بدونم راه کاری که نیاز به برنامه نویسی نباشه وجود نداره؟
      تو این مدت یک سئوال دیگه هم برام پیش اومد. وقتی avr 8 بیتی هست چطور با متغیر های بزرگتر کار میکنه؟ اگه مثلا با متغیر 4 بیتی کار میکنه چرا با بزرگترش نمی تونه کار کنه؟ آیا این متغیر 4 بایتی داخل avr تعریف شده یا کامپایلر؟ اگه داخل کامپایلر تعریف شده پس چرا بزرگتر از 4 بایت را درست نکردن؟

      یک سئوال دیگه هم فکر منو مدت هاست درگیر کرده. چرا یک متغیر از یک نوع چند تا نام داره؟ مثلا char , signed char
      در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

      1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
      2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
      3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

      دیدگاه


        #4
        پاسخ : کار کردن با متغیر های بزرگ

        متغیر unsigned long long هم هست که 8 بایتی هست .
        البته همه کامپایلر ها این نوع رو پشتیبانی نمیکنن .
        کدویژن پشتیبانی نمیکنه، ولی avr-gcc داره .

        اینکه میکروکنترلر چند بیتی هست ربطی به متغیر نداره .
        گذشت خصلت مردان است

        دیدگاه


          #5
          پاسخ : کار کردن با متغیر های بزرگ

          نوشته اصلی توسط tohid041
          متغیر unsigned long long هم هست که 8 بایتی هست .
          البته همه کامپایلر ها این نوع رو پشتیبانی نمیکنن .
          کدویژن پشتیبانی نمیکنه، ولی avr-gcc داره .

          اینکه میکروکنترلر چند بیتی هست ربطی به متغیر نداره .
          واقعا ؟؟؟
          من فکر کردم به معماری میکرو هم بستگی داره.


          ولی این long long را نمی دونستم. حیف که تو کد ویژن نیست.
          در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

          1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
          2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
          3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

          دیدگاه


            #6
            پاسخ : کار کردن با متغیر های بزرگ

            عزیز دل برادر، متغیر float درسته که 4 بایته، ولی ممیز شناوره و محدوده دینامیک بسیار وسیعی داره (رجوع کنید به ویکی پدیا).

            تبدیل انواع متغیرها و محاسباتشون یه کار اسمبلیه و قطعه کدهاش همه به اسمبلی نوشته شده با توجه به معماری پردازنده. کامپایلر ازشون به درستی استفاده می کنه. احتمالاً توی درس میکروپروسسور یا معماری کامپیوتر جمع دو تا عدد 2 بایتی با متغیرهای تک بایتی رو به عنوان تمرین نداشتید! خیلی مرسومه. فکر می کردم به چشمتون خورده باشه و برای همین گفتم که خودتون می تونید برنامه ش رو بنویسید.

            دیگه همینا دیگه.
            بیایید با Google آشتی کنیم!

            دیدگاه


              #7
              پاسخ : کار کردن با متغیر های بزرگ

              نوشته اصلی توسط محمد رستمی
              عزیز دل برادر، متغیر float درسته که 4 بایته، ولی ممیز شناوره و محدوده دینامیک بسیار وسیعی داره (رجوع کنید به ویکی پدیا).

              تبدیل انواع متغیرها و محاسباتشون یه کار اسمبلیه و قطعه کدهاش همه به اسمبلی نوشته شده با توجه به معماری پردازنده. کامپایلر ازشون به درستی استفاده می کنه. احتمالاً توی درس میکروپروسسور یا معماری کامپیوتر جمع دو تا عدد 2 بایتی با متغیرهای تک بایتی رو به عنوان تمرین نداشتید! خیلی مرسومه. فکر می کردم به چشمتون خورده باشه و برای همین گفتم که خودتون می تونید برنامه ش رو بنویسید.

              دیگه همینا دیگه.
              حالتون خوبه؟
              با یک متغیر فلوت اعداد داخلش گرد میشه و به جای اعشار از یک جا به بعد با توان نمایش پیدا می کنه. حتما یک بار دیگه درسات را مرور کن.
              من نمی خوام اعدادم گرد یا رند بشه.
              حداکثر عددی که داخل یک متغیر 4 بایتی به صورت صحیح میشه نگه داشت عدد 4294967296 هست. بعد از اون سر ریز میشه.
              من به متغیرهای کدویژن خیلی گاهی نداشتم برای همین پرسیدم ببینم نوع خاص یا راهکار خاصی داره یا نه که یکی از دوستان نوع long long را معرفی کرد. وگرنه خودم به راهنمایی های جنابعالی کاملا گاهم.
              در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

              1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
              2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
              3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

              دیدگاه


                #8
                پاسخ : کار کردن با متغیر های بزرگ

                نوشته اصلی توسط siyavash2k
                حالتون خوبه؟
                با یک متغیر فلوت اعداد داخلش گرد میشه و به جای اعشار از یک جا به بعد با توان نمایش پیدا می کنه. حتما یک بار دیگه درسات را مرور کن.
                من نمی خوام اعدادم گرد یا رند بشه.
                حداکثر عددی که داخل یک متغیر 4 بایتی به صورت صحیح میشه نگه داشت عدد 4294967296 هست. بعد از اون سر ریز میشه.
                من به متغیرهای کدویژن خیلی گاهی نداشتم برای همین پرسیدم ببینم نوع خاص یا راهکار خاصی داره یا نه که یکی از دوستان نوع long long را معرفی کرد. وگرنه خودم به راهنمایی های جنابعالی کاملا گاهم.
                احسند به شما که انقد درساتو خوب بلدی!
                بیایید با Google آشتی کنیم!

                دیدگاه


                  #9
                  پاسخ : کار کردن با متغیر های بزرگ

                  نوشته اصلی توسط محمد رستمی
                  احسند به شما که انقد درساتو خوب بلدی!
                  کامپایل می کنم :
                  احسنت به شما که اینقدر درس هاتون را بلد هستید.

                  اگه غیر از این هست که گفتم یا اشتباه میگم دوستانی که مطلع هستند بیان و نظر بدن.
                  در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

                  1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
                  2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
                  3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

                  دیدگاه


                    #10
                    پاسخ : کار کردن با متغیر های بزرگ

                    در بیسکام یک متغیر با نام double تعریف شده که اعشاری و 8 بایتی هست
                    اگه نتونستید نتیجه ای از اون بگیرید یک راه ساده وجود داره

                    1- 2 تا متغیر از نوع Long تعریف کنید
                    2- در صورت سرریز و یا اضافه شدن بیشتر از عدد تنظیمی (مثلا 100 میلیون در متغیر اول) یک واحد به متغیر دوم اضافه کنید و در متغیر اول اون مقدار رو کم کنید



                    اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

                    دیدگاه


                      #11
                      پاسخ : کار کردن با متغیر های بزرگ

                      نوشته اصلی توسط سعید باقرانی
                      در بیسکام یک متغیر با نام double تعریف شده که اعشاری و 8 بایتی هست
                      اگه نتونستید نتیجه ای از اون بگیرید یک راه ساده وجود داره

                      1- 2 تا متغیر از نوع Long تعریف کنید
                      2- در صورت سرریز و یا اضافه شدن بیشتر از عدد تنظیمی (مثلا 100 میلیون در متغیر اول) یک واحد به متغیر دوم اضافه کنید و در متغیر اول اون مقدار رو کم کنید


                      اگه ممکنه درباره اون راه ساده یکمی بیشتر توضیح بدین. چگونه؟
                      در زیر این نقاب چیزی بیشتر از گوشت هست. در زیر این نقاب یک ایده هست و ایده ها ضدگلوله هستند.

                      1-به اندازه ی باورهای هر کسی ؛ با او حرف بزن …. بیشتر که بگویی ، تو را احمق فرض خواهد کرد …!!!
                      2-تنها دو گروه نمى توانند افکار خود را عوض کنند: دیوانگان تیمارستان و مردگان گورستان.
                      3-آدم ها مثل عکس ها هستند: زیاد بزرگشون کنی ، کیفیتشون میاد پایین!

                      دیدگاه

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