LEVEL 1
কম্পিউটার তথ্য কীভাবে ধারণ করে
How Computers Represent Information
এই মডিউল যে প্রশ্নের উত্তর দেয়একটা bit pattern দেখে আমি কীভাবে জানব সেটা কী অর্থ বহন করছে?
একটা 32-bit pattern 01000001... — এটা কি সংখ্যা 65? অক্ষর "A"? একটা float? একটা instruction? উত্তর: pattern নিজে কিছু বলে না, interpretation বলে। এই module সেই interpretation-এর নিয়মগুলো শেখায়।
লেসন
- 01Bit Pattern কী — অর্থ কোথা থেকে আসেএকটা bit pattern নিজে কিছু বলে না — সংখ্যা, অক্ষর, float না instruction, সবটাই নির্ভর করে কোন convention দিয়ে আপনি সেটা পড়ছেন তার উপর।
- 02Binary, Octal, Hex — ইঞ্জিনিয়ারের ভাষায়Hex আর বাইনারির মধ্যে ৪ bit = ১ digit-এর নিখুঁত সম্পর্কই কেন হেক্স ইঞ্জিনিয়ারের ভাষা, আর হেক্স ডাম্প পড়া কেন প্রথম হাতিয়ার — অক্টালের গল্প ও নিজে একটা হেক্স ডাম্প টুল বানানো সহ।
- 03Bit, Nibble, Byte, Word — সংগঠনের এককBit থেকে nibble, byte, word — কতগুলো bit মিলে 'একটা জিনিস' হয় সেই সিদ্ধান্তই CPU-র register width, memory-র ঠিকানা, pointer-এর আকার, আর struct-এর ভেতরের ফাঁকা জায়গা পর্যন্ত সবকিছু নির্ধারণ করে।
- 04Unsigned Integer — শুধু অ-ঋণাত্মক সংখ্যার জগৎএকটা n-bit unsigned integer আসলে ℤ_(2ⁿ)-এর একটা সদস্য — range, wraparound, carry, আর size_t-এর বিপদ সবকিছুই এই এক লাইনের গণিত থেকে বেরিয়ে আসে।
- 05Signed Integer ও Two's Complement — ঋণাত্মক সংখ্যার তিনটা ইতিহাসএকই n bit দিয়ে ঋণাত্মক সংখ্যা লেখার তিনটা ঐতিহাসিক প্রতিদ্বন্দ্বী স্কিম ছিল — two's complement জিতেছে কারণ এটা আসলে ℤ_(2ⁿ)-এর additive inverse নেওয়া মাত্র, আর সেই একটা সিদ্ধান্তেই hardware সরল হয়ে যায়।
- 06Integer Overflow — যখন সত্যিকারের উত্তর জায়গায় আঁটে নাযখন একটা arithmetic operation-এর সত্যিকারের গাণিতিক ফলাফল n bit-এ আঁটে না, তখন কী ঘটে তা representation-ভেদে ভিন্ন — unsigned-এ এটা সংজ্ঞায়িত wraparound, signed-এ C/C++-এ এটা undefined behavior, আর এই ফারাকটাই বাস্তব জগতে সবচেয়ে বিধ্বংসী bug-ক্লাসগুলোর একটার জন্ম দিয়েছে।
- 07Fixed-Point বনাম Floating-Point — দশমিক সংখ্যা bit-এ কীভাবে বাঁচেসংখ্যার ভগ্নাংশ আর বিশাল dynamic range ধারণ করতে দুইটা পথ — fixed-point একটা স্থির scale-এর integer, floating-point একটা 'ভাসমান বিন্দুর' scientific notation; দুটোর মধ্যেকার trade-off আর IEEE 754-এর জন্মকথা।
- 08IEEE 754 — Floating-Point-এর Bit-বাই-Bit ব্যাকরণএকটা 32-বিট বা 64-বিট pattern-কে sign, biased exponent, আর implicit-leading-1 mantissa-তে ভাগ করে ঠিক কীভাবে সংখ্যায় রূপান্তর করা হয় — আর হাতে-কলমে দেখানো, কেন 0.1 store করলে যা জমা থাকে তা ঠিক 0.1 নয়।
- 09Floating-Point Precision — যখন ছোট্ট Error জমে বিপর্যয় হয়IEEE 754-এর rounding error arithmetic-এর মধ্য দিয়ে কীভাবে বাতিল হয়, জমে, বা বিপর্যয়কর হয়ে ওঠে — catastrophic cancellation, machine epsilon, Kahan summation, আর বাস্তব ইতিহাসের কিছু ব্যয়বহুল ভুল।
- 10ASCII ও Character Encoding — সংখ্যা কীভাবে অক্ষর হয়একটা byte শুধু একটা সংখ্যা 0-255 — কোন সংখ্যা কোন অক্ষর বোঝায় সেটা কেউ ঠিক করে দেয়, আর ASCII ছিল প্রথম ব্যাপকভাবে গৃহীত সেই চুক্তি, যার সীমাবদ্ধতা থেকেই code page বিশৃঙ্খলা আর mojibake জন্ম নেয়।
- 11Unicode ও UTF-8 — এক Character, বহু ByteUnicode প্রতিটা অক্ষরকে একটা স্থায়ী সংখ্যা (code point) দেয়, আর UTF-8/16/32 হলো সেই সংখ্যাকে byte-এ লেখার তিনটা ভিন্ন নিয়ম — যাদের মধ্যে UTF-8-এর self-synchronizing, ASCII-compatible, ও space-efficient নকশাই আজ ইন্টারনেটের ভিত্তি।
- 12বাংলা Text Encoding ও Grapheme Cluster — যখন এক Code Point এক অক্ষর নয়বাংলার মতো Brahmic script-এ একটা code point মানে সবসময় একটা visual 'অক্ষর' নয় — যুক্তাক্ষর আর matra মিলিয়ে একাধিক code point একটা grapheme cluster গঠন করে, আর এই পার্থক্য উপেক্ষা করলেই জন্ম নেয় cursor bug, truncation corruption, আর character-count ভুল।
- 13Endianness — বাইট অর্ডারের যুদ্ধএকটা multi-byte value byte-addressable memory-তে কোন ক্রমে বসবে সেটা প্রকৃতির নিয়ম না, একটা convention — big-endian না little-endian — আর সেই কনভেনশন না জানলে network packet আর file format ভুল পড়া হয়।
- 14Serialization ও Binary Format — In-memory থেকে Byte পর্যন্তIn-memory object-এর pointer শুধু নিজের process-এর মধ্যেই অর্থবহ, তাই disk বা network-এ পাঠাতে হলে সেটাকে একটা flat, self-contained byte sequence-এ রূপান্তর করতে হয় — আর সেই রূপান্তরের নিয়ম না মানলে padding garbage leak, endianness bug, আর ভাঙা backward compatibility অপেক্ষা করছে।
যা যা থাকছে
- Binary, decimal, hexadecimal ও base conversion
- Bits, bytes, words
- Unsigned integer representation
- Signed integers — sign-magnitude, one's complement, two's complement
- Integer overflow ও wraparound
- Fixed-point vs floating-point
- IEEE 754 — sign, exponent, mantissa
- Floating-point error, NaN, Inf, denormals
- Character encoding — ASCII, Latin-1
- Unicode, code points, UTF-8/16/32
- বাংলা text encoding ও grapheme clusters
- Endianness — little vs big
- Serialization ও binary formats
প্রজেক্ট
Bit Inspector CLI
●●○○○যেকোনো value-র raw bytes, binary, hex, IEEE 754 breakdown দেখানো।
Mini UTF-8 Codec
●●●○○নিজে UTF-8 encoder/decoder লেখা — বাংলা string দিয়ে test করা।
Float Calculator
●●●●○IEEE 754 addition নিজে implement করে hardware-এর সাথে মেলানো।