اطلاعیه

Collapse
No announcement yet.

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

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

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


    سلام
    دوستان کد زیر برا صفر کردن یه بیت از متغییر خوبه یا روش بهترین سراغ دارین، این ~ اون طوری که فهمیدم نات میکنه ولی من وقتی استفاده میکنم منفی کنه متغییر رو
    [code=c]Z = Z & ( 0b11111111 - 0b00000001 );[/code]
    اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

    اگه دوس دارید سریع به جواب برسید :
    1) قبل از پرسیدن سوال، بسرچید.
    2) سوالاتون رو با جزئیات کامل مطرح کنید.

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

    نوشته اصلی توسط md3848
    سلام
    دوستان کد زیر برا صفر کردن یه بیت از متغییر خوبه یا روش بهترین سراغ دارین، این ~ اون طوری که فهمیدم نات میکنه ولی من وقتی استفاده میکنم منفی کنه متغییر رو
    [code=c]Z = Z & ( 0b11111111 - 0b00000001 );[/code]
    اگه منفی میکنه بخاطر این شاید باشه که با پلاریته تعریف شده متغیرت مثلا char
    که باید unsigned char تعریف ش کنی
    اون علامت نقیض برای نات کردن بایت استفاده میشه و برای نات کردن بیت از ! استفاده میشه

    و صفر کردن یک بیت با یک اند انجام میشه یعنی اینجور

    کد:
    Z = Z & 0b11111110
    بیت صفر از بایت مذکوره صفر میشود و غیره هم به همین شکل

    دیدگاه


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

      با اجازه اساتید.
      راه میان برش هم
      کد:
      Z&=0b11111110
      مشخصات : http://www.eca.ir/forum2/index.php?topic=1721.msg638969#msg638969

      هیچ وقت از یادگیری نترس
      [move] :agree: :biggrin: :sad: :rolleyes:[/move]

      دیدگاه


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

        ممنون از شما دوستان
        نوشته اصلی توسط mj.sh
        با اجازه اساتید.
        راه میان برش هم
        کد:
        Z&=0b11111110
        خب این روش نمیشه استفاده کرد، چون تو بحث نوشتن کتاب خونه باید خوانایی برنامه و... رو هم در نظر گرفت



        Z&=0b11111110
        خب این روش هم نمیشه استفاده کرد، چرا که 0b11111110 رو میخوای چطور بدست بیاری، بحث سر همینه
        ما میخوایم مثلا بیت 0 از ریجستر A_Register رو 0 کنیم(اسم این بیت B هستش)، که میایم به صورت زیر مینویسیمش
        [code=c]A_Register = A_Register & ( 0xff - (1<<B) );[/code]
        حالا راه ساده تری برای این کار هستش که هم خوانایی برنامه حفظ بشه و هم ساده تر بشه؟
        اللَّهُمَّ صَلِّ عَلَى مُحَمَّدٍ وآلِ مُحَمَّدٍ وعَجِّلْ فَرَجَهُمْ

        اگه دوس دارید سریع به جواب برسید :
        1) قبل از پرسیدن سوال، بسرچید.
        2) سوالاتون رو با جزئیات کامل مطرح کنید.

        دیدگاه


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

          From
          Efficient C coding for AVR

          [code=c]
          #define SETBIT(x,y) (x |= (y)) /* Set bit y in byte x */
          #define CLEARBIT(x,y) (x &= (~y)) /* Clear bit y in byte x */
          #define CHECKBIT(x,y) (x & (y)) /* Check bit y in byte x */
          #define TOGGLEBIT(x,y) (x ^ (y)) /* toggle bit y in byte x */
          [/code]
          If the wind will not serve, take to the oars

          دیدگاه


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

            نوشته اصلی توسط ASHIT AXAR
            From
            Efficient C coding for AVR

            [code=c]
            #define SETBIT(x,y) (x |= (y)) /* Set bit y in byte x */
            #define CLEARBIT(x,y) (x &= (~y)) /* Clear bit y in byte x */
            #define CHECKBIT(x,y) (x & (y)) /* Check bit y in byte x */
            #define TOGGLEBIT(x,y) (x ^ (y)) /* toggle bit y in byte x */
            [/code]

            این به شرطیه که y مقداری باینری و هم عرض X داشته باشه


            من این روش رو خیلی دوس دارم :
            صفر کردن بیت n ام از رجیستر :
            [code=c]
            reg &= ~(1<<n);
            [/code]
            و یک کردن بیت n ام آن:
            [code=c]
            reg |= (1<<n);
            [/code]

            که این روش برای برنامه نویسی آرم ها که 32 بیت هستند خیلی راحت تره تا بخواهی مثلا اینجوری به تعداد 32 تا 0 و 1 بذاری .

            موفق باشید.

            دیدگاه


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

              نوشته اصلی توسط ASHIT AXAR
              From
              Efficient C coding for AVR

              [code=c]
              #define SETBIT(x,y) (x |= (y)) /* Set bit y in byte x */
              #define CLEARBIT(x,y) (x &= (~y)) /* Clear bit y in byte x */
              #define CHECKBIT(x,y) (x & (y)) /* Check bit y in byte x */
              #define TOGGLEBIT(x,y) (x ^ (y)) /* toggle bit y in byte x */
              [/code]
              بهترین راه :job:

              http://www.nongnu.org/avr-libc/user-manual/group__avr__sfr.html
              Reveng will surely come... Your hard time are ahead
              // - - - - - - - - - -
              برگه های کتاب به منزله بالهایی هستند که روح ما را به عالم نور و روشنایی پرواز میآ*دهند. فرانسوا ولتر
              // - - - - - - - - - -
              اگر برای هرچیزی به غیر از علاقه ی شدیدتان به الکترونیک تلاش کنید ، خیلی دور نخواهید رفت / خیلی هم خوب نخواهید شد.
              // - - - - - - - - - -

              دیدگاه

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