اطلاعیه

Collapse
No announcement yet.

چطوری 2تا بایت رو به صورت بیت به بیت با هم مقایسه کنم؟

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

    چطوری 2تا بایت رو به صورت بیت به بیت با هم مقایسه کنم؟

    سلام
    2تا متغیر از نوع بایت دارم که مثلا اولی مقدار 201 و دومی مقدار 141 داره
    هر کدوم بصورت باینری برابر هستن با 11001001 و 10001101
    حالا میخوام بصورت بیتی اونها رو مقایسه کنم و ببینم کدوم بیت ها تغییر کرده
    تو مثال بالا بیت سوم شده 1 و بیت هفتم شده 0

    کسی الگوریتم خوبی میتونه بهم بگه؟ با بیسیک مینویسم. ممنون.

    #2
    پاسخ : چطوری 2تا بایت رو به صورت بیت به بیت با هم مقایسه کنم؟

    دو تا متغیر رو با هم XOR کنید و در متغیر جدیدی بریزید . حالا در متغیر جدید عبارتی دارید که باقیمانده بیت های متفاوت هست .یعنی اگر
    11001001 و 10001101 رو با هم XOR کنید حاصل میشه 01000100 . حالا میتونید بیت های یک رو از یکی از راه های زیر بدست بیارید .
    1- شیفت دادن و پیدا کردن 1 ها
    2- AND کردن با اعداد توان 2 و اگر بعد از AND کردن اعداد توان 2 باقی موندند بیت منحصر به اون عدد یک خواهد بود.
    راه های دیگه ای هم هست که الان به ذهنم نمیرسه.
    الهم صل علی محمد و آل محمد و عجل فرجهم
    www.adaksell.com

    دیدگاه


      #3
      پاسخ : چطوری 2تا بایت رو به صورت بیت به بیت با هم مقایسه کنم؟

      نوشته اصلی توسط mojitaba نمایش پست ها
      دو تا متغیر رو با هم XOR کنید و در متغیر جدیدی بریزید . حالا در متغیر جدید عبارتی دارید ......
      روش جالبیه
      کسی روش دیگه ای یا احیانا ساده تری داره؟ تو دستورات خود کمپایلر بصورت آماده چنین چیزی نیست؟

      دیدگاه


        #4
        پاسخ : چطوری 2تا بایت رو به صورت بیت به بیت با هم مقایسه کنم؟

        نوشته اصلی توسط tabandokht نمایش پست ها
        تو دستورات خود کمپایلر بصورت آماده چنین چیزی نیست؟
        تو دستورات بسکام که نگاه کردم XOR بودش
        بقیه اش هم نیاز به دستور خاصی نداره.
        الهم صل علی محمد و آل محمد و عجل فرجهم
        www.adaksell.com

        دیدگاه


          #5
          پاسخ : چطوری 2تا بایت رو به صورت بیت به بیت با هم مقایسه کنم؟

          در بسکام با یک نقطه و عدد بعد از اسم متغیر بیت قابل دسترسی هست مثلا اگر متغیر اولی A باشه و دومی B باشه برای سنجش مقدار بیت صفربه صورت زیر عمل کنید
          کد:
          [FONT=Yekan]if a.0=b.0 then[/FONT]
          [FONT=Yekan]هر کاری که میخواین[/FONT]
          [FONT=Yekan]end if[/FONT]
          حالا با یه تغییر ساده و قرار دادن داخل یک حلقه میتونین به راحتی استفاده کنید و کل بیت ها رو یکجا بررسی کنید
          Aristar Group - Always And Forever

          دیدگاه

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