Foundationপ্রথম নীতি থেকে
LEVEL 1 · How Computers Represent Information

Sign-Magnitude

সাইন-ম্যাগনিচিউড

ঋণাত্মক সংখ্যা লেখার সবচেয়ে স্বজ্ঞাত (কিন্তু হারিয়ে যাওয়া) scheme — MSB শুধু sign বোঝায়, বাকি bit-গুলো magnitude।

সবচেয়ে সহজ চিন্তা: একটা bit sign-এর জন্য আলাদা রাখো (0=+, 1=-), বাকিগুলো magnitude লেখো — ঠিক যেভাবে মানুষ কাগজে +5/-5 লেখে।

8-bit-এ -5: sign bit 1, magnitude 000010110000101

সমস্যা — দুইটা শূন্য: 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 জটিলতার সমস্যাটা প্রযোজ্য না।