اطلاعیه

Collapse
No announcement yet.

0 کردن یک بیت در زبان C

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

    0 کردن یک بیت در زبان C

    سلام.
    اگه من بخوام که فقط یک بیت در یک رجیستر رو 0 کنم به طوری که بقیه بیت ها در همون وضعیت قبلی خود باقی بمانند باید چه کدی بنویسم. مثلا بخوام فقط بیت 5 از رجیستر X رو 0 کنم و به بقیه بیت ها کاری نداشته باشم.
    حالا اگه بخوام فقط یک بیت در یک رجیستر 0 باشه و بقیه بیت ها همه 1 باشند باید چه کدی بنویسم.

    #2
    پاسخ : 0 کردن یک بیت در زبان C

    سوال اول:
    کد:
    x=x & (!(1<<5))
    سوال دوم:
    کد:
    x=(x | 1) & (!(1<<5))
    ... و (بدانيد) گرفتن تصميمهاى محكم (براى رسيدن به اهداف بزرگ) با خوش گذرانى و سفرهآ‌هاى رنگين سازگار نيست و چه بسيار كه خواب شبانه تصميمهاى محكم روز را از ميان برده و تاريكيآ‌ها، خاطره همتآ‌هاى بلند را از يادها محو كرده است. (نهجآ‌البلاغه، خطبه211)

    امام علي (ع):کسي که به وقت ياري رهبرش در خواب باشد، با لگد دشمنش بيدار مي شود (غررالحکم،ص 422)

    دیدگاه


      #3
      پاسخ : 0 کردن یک بیت در زبان C

      نوشته اصلی توسط AliRezaDAVE
      سوال اول:
      کد:
      x=x & (!(1<<5))
      سوال دوم:
      کد:
      x=(x | 1) & (!(1<<5))
      البته کد دوم باید بصورت زیر نوشته شود :

      کد:
      x = (x | 255) & (!(1<<5));
      روند اجرا با فرض یک مقدار برای رجیستر ایکس :

      کد:
      x = 11100011
      1 = 00000001
      255 = 11111111
      1<<5 = (00000001)<<5 = 00100000
      !(1<<5) = !(00100000) = 11011111
      (x | 255) = 11100011 | 11111111 = 11111111
      (x | 255) & (!(1<<5)) = (11111111) & (11011111) = 11011111
      x = 11011111
      که در آن بیت پنجم رجیستر ایکس صفر و مابقی بیت ها همگی یک هستند

      دیدگاه

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