یک سئوال بسیار ساده چطوری میشه توی کدویژن بایت بالا و پایین یک unsigned int رو جداکرد !!!!
اطلاعیه
Collapse
No announcement yet.
LSB و MSB
Collapse
X
-
پاسخ : LSB و MSB
آقابرای شیفت دادن به راست به اندازه ی 8 بیت warning میده میگه Warning: D:\Misagh\TabloRavan\TabloRavan_Diplay Driver\TabloRavan_Diplay Driver.c(455): expression with possibly no effect منظورش چیه !!!!oo:
سزد کز خاتم لعلش زنم لاف سلیمانی / چو اسم اعظمم باشد چه باک از اهرمن دارم
لاحول و لاقوه الا بالله العلیّ العظیم
دیدگاه
-
پاسخ : 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
دیدگاه
-
پاسخ : LSB و MSB
سلام
میتونی جهت جدا کردن بایت کم ارزش، اون متغیر دو بایتی را با 0x00FF اند (and) منطقی کنی و جهت جدا کردن بایت باارزش، اون متغیر دو بایتی را با 0xFF00 اند (and) منطقی کنی. مثلا فرض کن یک متغیر داری با نام a که دو بایت هست.
a_lsb= a & 0x00ff
a_msb=s & 0xff00
که a_lsb و a_msb یک متغیر از نوع char می تونی تعریف کنیجدیدترین ویرایش توسط ali2552; ۲۲:۰۸ ۱۴۰۰/۱۱/۱۹.
- تشکرها 1
دیدگاه
-
پاسخ : 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];
دیدگاه
دیدگاه