اطلاعیه

Collapse
No announcement yet.

LSB و MSB

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

    LSB و MSB

    یک سئوال بسیار ساده چطوری میشه توی کدویژن بایت بالا و پایین یک unsigned int رو جداکرد !!!!
    سزد کز خاتم لعلش زنم لاف سلیمانی / چو اسم اعظمم باشد چه باک از اهرمن دارم
    لاحول و لاقوه الا بالله العلیّ العظیم

    #2
    پاسخ : LSB و MSB

    با عملگرهای بیتی ...

    اگه مستقیم int رو یه char بنویسی که بایت پایینش میره تو متغیر char
    برای بایت بالا هم میتونی اول 8 بیت int رو به راست شیفت بدی (var>>8) بعد مثل بالا بریزیش تو char
    https://www.linkedin.com/in/mohammadhosseini69

    http://zakhar.blog.ir

    دیدگاه


      #3
      پاسخ : LSB و MSB

      خوب پاسخ سریعی بود اما یعنی هیچ راه روتینی نداره !!
      سزد کز خاتم لعلش زنم لاف سلیمانی / چو اسم اعظمم باشد چه باک از اهرمن دارم
      لاحول و لاقوه الا بالله العلیّ العظیم

      دیدگاه


        #4
        پاسخ : LSB و MSB

        آقابرای شیفت دادن به راست به اندازه ی 8 بیت warning میده میگه Warning: D:\Misagh\TabloRavan\TabloRavan_Diplay Driver\TabloRavan_Diplay Driver.c(455): expression with possibly no effect منظورش چیه !!!! oo:
        سزد کز خاتم لعلش زنم لاف سلیمانی / چو اسم اعظمم باشد چه باک از اهرمن دارم
        لاحول و لاقوه الا بالله العلیّ العظیم

        دیدگاه


          #5
          پاسخ : LSB و MSB

          نوشته اصلی توسط misytaz
          آقابرای شیفت دادن به راست به اندازه ی 8 بیت warning میده میگه Warning: D:\Misagh\TabloRavan\TabloRavan_Diplay Driver\TabloRavan_Diplay Driver.c(455): expression with possibly no effect منظورش چیه !!!! oo:
          بیچاره داره میگه عبارتی که نوشتی کار خاصی نمیکنه!
          احتما زیاد علامت مساوی رو نزاشتی
          یعنی بجای اینکه اینطوری بنویسی :

          var=var>>8;

          اینطوری نوشتی :

          var>>8
          https://www.linkedin.com/in/mohammadhosseini69

          http://zakhar.blog.ir

          دیدگاه


            #6
            پاسخ : LSB و MSB

            :mrgreen: :angry:واقعا کمک بزرگی کردی
            سزد کز خاتم لعلش زنم لاف سلیمانی / چو اسم اعظمم باشد چه باک از اهرمن دارم
            لاحول و لاقوه الا بالله العلیّ العظیم

            دیدگاه


              #7
              پاسخ : LSB و MSB

              سلام
              میتونی جهت جدا کردن بایت کم ارزش، اون متغیر دو بایتی را با 0x00FF اند (and) منطقی کنی و جهت جدا کردن بایت باارزش، اون متغیر دو بایتی را با 0xFF00 اند (and) منطقی کنی. مثلا فرض کن یک متغیر داری با نام a که دو بایت هست.
              a_lsb= a & 0x00ff
              a_msb=s & 0xff00
              که a_lsb و a_msb یک متغیر از نوع char می تونی تعریف کنی
              جدیدترین ویرایش توسط ali2552; ۲۲:۰۸ ۱۴۰۰/۱۱/۱۹.

              دیدگاه


                #8
                پاسخ : LSB و MSB

                نوشته اصلی توسط ali2552 نمایش پست ها
                سلام
                میتونی جهت جدا کردن بایت کم ارزش، اون متغیر را با 0x0F اند (and) منطقی کن و جهت جدا کردن بایت باارزش اون متغیر را به 0xF0 اند (and) منطقی کن. مثلا فرض کن یک متغیر داری با نام a که دو بایت هست.
                a_lsb= a & 0x0f
                a_msb=s & 0xf0
                که a_lsb و a_msb یک متغیر از نوع char می تونی تعریف کنی
                با سلام و احترام
                استفاده از union برای اینکار بهتر و حرفه ایی تر میباشد.
                کد:
                  union {
                    char b[2];
                    unsigned int w;
                  } datau;
                  
                  datau.w = wordData;
                  
                  char lsb = datau.b[0];
                  char msb = datau.b[1];
                موفق باشید.

                دیدگاه

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