اطلاعیه

Collapse
No announcement yet.

کار نکردن دستور شیفت

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

    کار نکردن دستور شیفت

    سلام

    این برنامه تا 31 شیفت کار میکنه ولی وقتی از 31 شیفت عبور میکنه مقدار متغیر A صفر میشه!! آیا ممکنه چون cpu میکرو 32 بیتی هست درست عمل نمیکنه؟

    کد:
    unsigned long long a;
    unsigned char b;
    while(1){
    b++;
    a=(1<<b);
    if(b==63)b=0;
    }

    #2
    پاسخ : کار نکردن دستور شیفت

    نمی دونم چرا متغییر 64 بیتی نمیشه گرفت
    با اینکه long long رو گفته 64 بیتی هستش ولی بهش 32 بیت اختصاص داده میشه
    یه دایرکتیوی رو گفته باید فهال کنین ، من قبلا باهاش سرکله زدم همش ارور میداد

    دیدگاه


      #3
      پاسخ : کار نکردن دستور شیفت

      خیلی جالبه اگه اینو بنویسی درست میشه خخخ
      کد:
      unsigned long long a;
      unsigned char b;
      while(1){
      b++;
      a=pow(2,b);
      if(b==63)b=0;
      }

      دیدگاه


        #4
        پاسخ : کار نکردن دستور شیفت

        فکر نکنم حاصل 64 بیتی باشه

        دیدگاه


          #5
          پاسخ : کار نکردن دستور شیفت

          آقا مشکل حل شد شما برای استفاده از شیفت در متغییر64 بیت باید به صورت زیر عمل کنی :applause: :wow: :nice:

          کد:
          #include "stdint.h"
          unsigned long long a;
          unsigned char b;
          while(1){
          b++;
          a=(ULL1<<b);
          if(b==63)b=0;
          }

          دیدگاه


            #6
            پاسخ : کار نکردن دستور شیفت

            الان ULL1 رو متغییر گرفتی یا typecast ؟
            به نظر به عنوان متغییر استفاده شده

            دیدگاه

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