الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيفية قراءة بت

مغلق
بدأه علي محمد في 12 أغسطس 2006 · 10 رد · 931 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

كيفية قراءة ملف بت بت وما نوع المتغير الذي اضع فيه قيمة البت :s

#2

سلام عليكم

المعالج و الذاكرة تتعامل مع byte مباشرة. لذلك تبادل البيانات بما فيه القرأة من ملف لا يستطيع التعامل مباشرة مع bit. لازم تقراءbyte ثم باستخدام mask operators تستطيع معرفة bit.

#3

أخوي إقرأها بايت بايت عن طريق char وبعدين تعامل معها bit bit

هذه أسهل وأبسط طريقة لكنها ليست أفضل طريقة

#4

الاخ الكريم b.m.s

اقتباس
هذه أسهل وأبسط طريقة لكنها ليست أفضل طريق

ممكن اسم افضل طريقة

و شكراً

#5

أفضل طريقة هي قراءة الملف كله دفعة واحدة في الذاكرة ثم يمكنك عمل ما تريد على الملف قي الذاكرة فهذا أسرع كثيراً خصوصاُ لو حجم الملف ليس ضخم

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#6

أفضل طريقة ليست في التعامل مع الملف جملة واحدة لكن في التعامل مع أصغر معلومة و هي البت.

أول شيئ هي كيف تتم تسجيل البيانات في الملف, و أقصد بها alighnement هل على 8bits أم 16 أم 32. لأن هذه القيم هي عرض البيانات الوحيدة المتوفرة في المعالج. ; alignement سيحدد حجم الملف بالبايت هل هو من مضاعفات 8 أم 16 أم 32.

أصغرها هي 8bits وليس البت. يعني مستحيل تجل ملف مثلا حجمه هو 5bits أو ليس من مضاعفات 8bits.

فكيف ستقوم بقراءة البيانات بت وراء بت؟ هنا نقوم بمعرفة أول شيء و هي alignements. تقرأ بعدها البيانات وفق عرض align في سجلات المعالج المناسبه لها , ونبدأ بمعالجة البيانات بواسطة shift او BitMask بواسطة معاملات Bitwise ك Or و and و shl و shr و Xor و غيرها... منها ما هو متوفر فقط في assembly language و لن تجدها في لغة C او أية لغة عالية.

سأتغيب عن المنتدى وستكون لي زيارات خفيفة بين الحين و الحين

يا صاحب الهم إن الهم منفرج.....................أبشر بخير فإن الفارج الله.

اليأس يقطع أحيانا بصاحبه..........................لا تيأس فإن الكافي الله.

الله يحدث بعد العسر ميسرة.........................لا تفزعن فإن الصانع الله.

إذا بليت فثق بالله وارض به...................فإن الذي يكشف البلوى هو الله.

و الله ما لك غير الله من أحد.......................فحسبك الله في كل لك الله

أخوكم مراد

27_06_06_05_21_41_1151410901logo_adl_wal_ihsan.jpg

#7

يسلمو جزاكم الله خير

ولكن تمنيت ان تكون الجابات مدهمة بمثال أو حتى بجملة برمجة

وعلى العموم مشكورين :lol:

#8

عذراً على التأخير

للقراءة من الملف توجد ثلاثة إحتمالات :-

1) أن تقرأ من الملف بايت بايت :- وهذه الطريقة تعتبر أسهل طريقة لأنها تخلصك من مشكل كثيرة مثل كم متوسط حجم الملفات اللي بتتعامل معها البرنامج فحتى لو كان الملف حجمه 1 Gb أو حجمه 1 b سيظل نظرتك لهم واحدة - وهذا خطأ - وهذه الطريقة تعتبر سيئة إذا كان حجم الملفات أكبر من واحد ميقا تقريبا

2) قراءة الملف كاملاً مرة واحدة :- وهذه الطريقة سريعة جداً لكنها ستدخلك في متاهات كثيرة مثل متوسط حجم الملفات , هل أستطيع تحميل الملف بالكامل إلى الذاكرة و ..... إلخ لكنها تبقى الأسرع إذا كان حجم الملفات صغيراً أو متوسط ويمكن تحميله إلى الذاكرة بدون التأثير سرعة الجهاز .

3) هو أن تحجز لك buffer ( مصفوفة من البايتات ) وتقوم بتعبأته من الملف وتتوقف في حالتين :-

1) إما أن يصادفك End of Line أو End of File

2) أو أن يمتلأ الbuffer

طبعاً فيه دراسات حول أفضل حجم لل buffer وكانت بالضبط تتراوح ما بين 1024بايت إلى 4096 بايت والله أعلم لاأذكر الحجم بالضبط ومن أراد الإستزادة فعليه

بكتاب Advanced Programming in the UNIX® Environment

وهذه تعتبر أفضل طريقة لأنها تجمع ما بين السرعة والذاكرة بحيث لا يطغى جزء على أخر .

وما أراد التجريب فليجرب ملف حجمه 1 ميقا ويقراه بالثلاث طرق ويسجل الوقت ويحاول يكبر الحجم ويعيد التجربة ويرى الأفضل .

تم تعديل هذه المشاركة بواسطة b.m.s في 13 أغسطس 2006 في 21:43

#9

ولا تزعل أخ على :) >>

#include <fstream>
#include <iostream>
using namespace std;

void main()
{
	ifstream file("test.txt");
	char a;
	int bit=1;	 // mask to read the first bit > 0x0000 0001
	file >> a;
	for (int i=0; i<8; i++)
		cout << (bit & (a>>i));  // shift a to the right i positions and read the first bit
	cout << endl;
}

إعمل ملف إسمه test.txt و إكتب فيه أى حرف و شغل البرنامج حيطلعلك ال ascii بتاعه.

#10

احساسي يقول انك تحتاج هذا الموضوع في مرحلة فك الضغط , قابلتني في طريقة Huffman , والطريقة الافضل من وجهة نظري كما قال الاخ b.m.s الطريقة الثالثة

اقتباس
وهذه تعتبر أفضل طريقة لأنها تجمع ما بين السرعة والذاكرة بحيث لا يطغى جزء على أخر .
#11

موضوع رائع والله

هذا الموضوع مغلق.

مواضيع مشابهة