تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 1 از 2 12 آخرآخر
نمايش نتايج 1 به 10 از 12

نام تاپيک: چگونه بيت به بيت فايلي رو جستجو كنم

  1. #1
    اگه نباشه جاش خالی می مونه rouhallah's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    478

    14 چگونه بيت به بيت فايلي رو جستجو كنم

    بنام خدا
    با سلام

    دوباره پس از مدتي كه از دستم راحت بودين( اونم بخاطر امتحانات ) اومدم تا با سوالاتم سرتونو درد بيارم
    اما اينبار سوالم در مورد بيت‌هاي رايانه‌اي هست. و اون اينكه در زبان سي آيا تابعي هست يا راهي هست كه بشود از ابتدا يا انتهاي يك فايل به تعداد مشخصي بيت مثلاً چهار بيت چهار بيت فايل رو جستجو يا اسكن نمود
    ميدونم يه اعمالي رو در اين زبان ميشه رو بيتها انجام داد و براي اين منظور هم عملگرهايي وجود داره اما اين كه آيا تابعي هم براي جستجوي بيت به بيت در اين زبان باشه رو نميدونم.
    لطفاً اگر راهي بلديد كمكم كنيد با تشكر از هم شما

  2. #2
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض

    توی c واحد دسترسی به داده ها بایت هست و نمیشه یک فایل رو بیت به بیت خوند و اگه این کار نیازه باید اون رو بایت به بایت خوند و برای هر بایت همۀ بیت ها رو چک کرد.

  3. #3
    اگه نباشه جاش خالی می مونه rouhallah's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    478

    پيش فرض

    توی c واحد دسترسی به داده ها بایت هست و نمیشه یک فایل رو بیت به بیت خوند و اگه این کار نیازه باید اون رو بایت به بایت خوند و برای هر بایت همۀ بیت ها رو چک کرد.


    با سلام دوباره
    ببخشيد بذاريد من مشكلم رو بگم شايد راه حلي برايش داشته باشيد
    من ميخوام از ابتدا يا از انتهاي يك فايل (زياد فرق نميكنه) فايلي رو به صورت چهار بيت چهار بيت بخونم و براي هر آرايشي خاص از اين چهار بيت ها يك شرط تعيين كنم و اگر مثلاً فلان چهاربيت به عنوان مثال: 1001 خوانده شد يك عملي انجام شود كه چون اين چهار بيت ميباشد فكر نكنم بتوان با بررسي بايت به هدفم برسم
    اصلاً فرض كنيم من بيام و هشت بيت هشت بيت بخونم آيا در اين صورت مي توان آرايش هر بايت را تشخيص داد

    در ضمن اگر من فرض خود را عوض كنم باز هم به بيتهاي كمتر از هشت نياز دارم مثل 7 بيت 6 بيت تا 1 بيت
    پس اگر راهي به ذهنتان ميرسد كه بشود حتي يك بيت از يك بايت را نيز تشخيص داد كمكم كنيد
    متشكر م

  4. #4
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    توضیحات دوست عزیزم "hamidreza_buddy" کاملا صحیح هست.
    شما برای اینکه بیت ها رو بتونید چک کنید میتونید از bits operator استفاده کنید. ( & یا >> یا.....)
    بطور صریح تابعی برای این کار وجود نداره ولی میشه به راحتی این کار رو انجام داد.
    کافی شما عدد یک ( 1 ) رو به اندازه ی index مورد نظرتون به سمت چپ شیفت بدید و حاصل رو با متغییر
    مورد نظرتون & کنید. مشخصه که اگه در index مورد نظر 1 باشه حاصل 1 و اگه 0 باشه حاصل 0 هست.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نمونه که براتون میذارم برای چک کردن متغییر های int هست (که 32 بیتی هست.)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگه مشکلی پیش اومد اطلاع بدید.

  5. #5
    اگه نباشه جاش خالی می مونه rouhallah's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    478

    پيش فرض

    سلام.
    توضیحات دوست عزیزم "hamidreza_buddy" کاملا صحیح هست.
    شما برای اینکه بیت ها رو بتونید چک کنید میتونید از bits operator استفاده کنید. ( & یا >> یا.....)
    بطور صریح تابعی برای این کار وجود نداره ولی میشه به راحتی این کار رو انجام داد.
    کافی شما عدد یک ( 1 ) رو به اندازه ی index مورد نظرتون به سمت چپ شیفت بدید و حاصل رو با متغییر
    مورد نظرتون & کنید. مشخصه که اگه در index مورد نظر 1 باشه حاصل 1 و اگه 0 باشه حاصل 0 هست.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نمونه که براتون میذارم برای چک کردن متغییر های int هست (که 32 بیتی هست.)
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    اگه مشکلی پیش اومد اطلاع بدید.


    با سلام به شما دوست عزيز جناب someone كه در رابطه با مشكلات من شما كمك‌هاي شاياني به من كرديد
    من اصلاً قصد ندارم خود را بيش از اون چيزي كه هستم نشون
    بدم اگه ميبينيد شايد سوالاتم شايد در حد يك مبتدي نباشه فقط و فقط به خاطر اينه كه من يكم منطق خوبي دارم و به مسائل رايانه‌اي نيز با همون منطقه كه فكر ميكنم كه نتيجش چنين سوالاتي هست كه ميبينيد
    پس خواهش مي‌كنم در جوابهايي كه به سوالاتم ميدهيد كمي سطح پايين تر صحبت كنيد مخصوصاً در مورد اصطلاحات برنامه نويسي
    من اگه تو جملاتتون بحث منطقي خاي از اصطلاحات پيچيده كه تا اكنون نشنيدم باشه ميتونم اون چيزي كه ميگوييد رو بفهمم

    حالا با اين توضيحاتي كه دادم
    چند تا سوال داشتم
    1 منظور شما از جمله کافی شما عدد یک ( 1 ) رو به اندازه ی index مورد نظرتون به سمت چپ شیفت بدید و حاصل رو با متغییر
    مورد نظرتون & کنید. چيست ؟
    آيا منظورتون اينه كه مثلاً من گفتم ميخواهم چهار بيت چهار بيت فايلي رو چك كنم اينه كه بايد عدد( 1 )را به اندازه چهار بيت به سمت چپ شيفت دهم؟
    2 و اونجايي كه گفتيد بايد حاصل رو با متغير مورد نظر خود & كنم چون من نمونه برنامه‌اي نديدم اگه توضيح بديد كدوم متغيري رو بايد تعيين كنم كه حاصل با اون متغير & بشه ممنون ميشوم؟
    3 و سوال آخرم اينه كه اين برنامتون در باره" چک کردن متغییر های int " دقيقاً چه كاري انجام ميده
    اگه به سوالاتم جواب بدهيد مخصوصاً اين آخري من رو هم كم كم وارد جمع شما برنامه نويسان حرفه‌اي مي‌كنيد و با اين كار من رو خيلي خوشحا مي‌كنيد مطمئن باشيد زحمت شما بي اثر نخواهد بود چون من تلاش خودم رو خواهم كرد و در پي تلاش حتماً پيروزي هست
    با تشكر
    والسلام

  6. #6
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام دوست عزیز.
    من کاری نکردم و خوشحال میشم اگه بتونم کمکی کرده باشم.
    فرض کنید که شما یک متغییر از نوع int دارید که 32 بیتی هست. اگه شما مقدار این متغییر رو برابر
    با 1 قرار بدید به این صورت در این 4 بایت قرار میگیره :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یا مثلا عدد دو 2 :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حالا اگه شما عدد 1 رو مثلا 4 بار به سمت چپ شیفت بدید دارید :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    احتمالا با ضرب منطقی آشنا هستید (&) که به این صورت عمل میکنه:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خب حالا در نظر بگیرید که شما عددی دارید مثل 2 که به صورت بالا در حافظه ذخیره شده.
    برای اینکه بیت دوم رو چک کنید کافیه عدد 1 رو یکبار به سمت چپ شیفت بدید که میشه 00000010
    (البته بایت اول) و با عدد 2 and کنید (& یا همون ضرب منطقی ) حاصل به این شکل در میآد :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    یعنی بیت دوم TRUE هست یا مقدارش برابر یک هست.
    به همین ترتیب اگه بخواید باقی بیت ها رو چک کنید کافی عدد 1 رو به اندازه مورد نظرتون شیفت بدید.
    (به سمت چپ ). مثلا برای چک کردن بیت اندیس 4 ام کافی هست عدد 1 رو 4 بار شیفت بدید و با عدد مورد نظرتون & کنید و حاصل این ضرب رو بررسی کنید.
    درضمن بیاد داشته باشید که شمارش از 0 شروع میشه.
    باز هم اگه مشکلی بود اطلاع بدید.

  7. #7
    اگه نباشه جاش خالی می مونه rouhallah's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    478

    پيش فرض

    با سلام

    راستي اين طور كه معلومه با اين توضيحات شما نميشه در يك عنصر آرايه يك بيت رو ذخيره نمود

  8. #8
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    دوباره سلام.
    فرض میکنیم شما یک آرایه ی 2 تایی از اعداد داشته باشید. این به این معنی هست که شما
    دو متغییر 32 بیتی از int دارید. که مثلا بصورت زیر به اونها دسترسی دارید :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خب مثل قبل ما به تک تک بیت های این دو عضو دسترسی داریم. برای اینکه بتونیم بیت ها رو دستکاری کنیم
    باز میتونیم از boolean operator استفاده کنیم. مثل And یا Or یا Xor ( & و | و ^ ).
    فرض کنیم عدد اول ما 1 باشه که به این صورت ذخیره شده :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خب فرض کنید ما میخوایم بیت دوم رو یک کنیم. یکی از راهها اینه که این عدد رو با عدد 2 OR کنیم.
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    نتیجه به این شکل میشه :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که نتیجش میشه عدد 3. در نمونه ای که براتون گذاشتم به اول عدد 1 رو یک بار به سمت چپ شیفت
    دادم که نتیجش میشه عدد 2 و بعد با Int مورد نظرم Or کردم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    باز اگه مشکلی بود اطلاع بدید.

  9. #9
    اگه نباشه جاش خالی می مونه rouhallah's Avatar
    تاريخ عضويت
    Aug 2006
    پست ها
    478

    پيش فرض

    با سلام
    شايد من سوالم رو درست مطرح نكردم
    منظورم اين است كه اگه ما مثلاً يك كاراكتر داشته باشيم كه هشت بيت داشته باشد آيا ميتونيم اين هشت بيت رو تو يك آرايه يك بعدي قرار دهيم كه داراي 8 عنصر است.
    به صورتي كه در هر عنصر اين آرايه يك بيت از هر هشت بيت اون كاراكتر ذخيره بشه
    مثلاً كاراكتر A كه كد اسكي اون 65 ميباشد به صورت دودويي ميشود 00100001
    اگه بخواهيم اين بيتهاي كاراكتر A را در آرايه‌اي ذخيره كنيم ميتونيم آرايه‌اي 8 عنصري تعريف كنيم كه هر كدام از اين بيتها تو يك عنصر اون آرايه قرار بگيره؟
    اگه ميشه لطفاً راهنماييم كنيد.
    با تشكر

  10. #10
    در آغاز فعالیت
    تاريخ عضويت
    Feb 2007
    پست ها
    1

    پيش فرض

    با سلام
    شايد من سوالم رو درست مطرح نكردم
    منظورم اين است كه اگه ما مثلاً يك كاراكتر داشته باشيم كه هشت بيت داشته باشد آيا ميتونيم اين هشت بيت رو تو يك آرايه يك بعدي قرار دهيم كه داراي 8 عنصر است.
    به صورتي كه در هر عنصر اين آرايه يك بيت از هر هشت بيت اون كاراكتر ذخيره بشه
    مثلاً كاراكتر A كه كد اسكي اون 65 ميباشد به صورت دودويي ميشود 00100001
    اگه بخواهيم اين بيتهاي كاراكتر A را در آرايه‌اي ذخيره كنيم ميتونيم آرايه‌اي 8 عنصري تعريف كنيم كه هر كدام از اين بيتها تو يك عنصر اون آرايه قرار بگيره؟
    اگه ميشه لطفاً راهنماييم كنيد.
    با تشكر
    سلام دوست عزیز , اگر منظورت اینه که می خوای یک بایت رو در یک آرایه ذخیره کنی که هر عضو اون آرایه , یک متغیره باید همون طوری که somone گفت یه بایت یه بایت اطلاعاتتو بخونی و بیت هاشو در آری
    در غیر این صورت می تونی بایت خونده شده را عینا در یک متغیر ذخیره کنی و هر بیت رو که لازم داشتی با عملیات شیفت خارج کنی.
    البته اگر هم با اسمبلی کارکرده باشی می تونی یه برنامه بنویسی که بیت به بیت برات اطلاعات رو بگیره و بعد با یه برنامه c اونو لینک کنی.
    ضمنا اگه فضولی نیست. اگه داری روی یک برنامه دی اسمبل کار می کنی(احساس کردم شاید اینجوریه ) برای چک کردن دستورا می تونی از جدول استفاده کنی

صفحه 1 از 2 12 آخرآخر

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •