Sign-Magnitude
সাইন-ম্যাগনিচিউড
ঋণাত্মক সংখ্যা লেখার সবচেয়ে স্বজ্ঞাত (কিন্তু হারিয়ে যাওয়া) scheme — MSB শুধু sign বোঝায়, বাকি bit-গুলো magnitude।
সবচেয়ে সহজ চিন্তা: একটা bit sign-এর জন্য আলাদা রাখো (0=+,
1=-), বাকিগুলো magnitude লেখো — ঠিক যেভাবে মানুষ কাগজে
+5/-5 লেখে।
8-bit-এ -5: sign bit 1, magnitude 0000101 → 10000101।
সমস্যা — দুইটা শূন্য: 00000000 (+0) আর 10000000 (-0)
ভিন্ন bit pattern, কিন্তু গাণিতিকভাবে একই সংখ্যা। এতে একটা
n-bit representation-এর 2ⁿ টা pattern দিয়ে মাত্র 2ⁿ - 1
টা distinct সংখ্যা প্রকাশ পায় — একটা pattern নষ্ট হয়।
আরও বড় সমস্যা — hardware জটিলতা: addition circuit-কে আগে দুই operand-এর sign দেখে ঠিক করতে হয় এটা যোগ নাকি বিয়োগ, তারপর magnitude-এর উপর সেই অনুযায়ী কাজ করতে হয় — [[twos-complement]]-এর মতো একটামাত্র uniform adder দিয়ে চলে না।
এই দুই কারণেই sign-magnitude হার্ডওয়্যার integer representation হিসেবে হেরে গেছে, যদিও IEEE 754 floating-point-এ (Level 1-এরই পরের অংশে) ঠিক এই একই scheme ব্যবহার হয় — কারণ সেখানে magnitude আর exponent/mantissa আলাদা এনকোড হয়, তাই hardware জটিলতার সমস্যাটা প্রযোজ্য না।