নেতিবাচক শূন্য কেন গুরুত্বপূর্ণ?


64

আমরা কেন ধনাত্মক এবং negativeণাত্মক শূন্যের জন্য বিভিন্ন উপস্থাপনের বিষয়ে যত্নশীল তা সম্পর্কে আমি বিভ্রান্ত।

আমি অস্পষ্টভাবে পড়ার দাবিগুলি স্মরণ করি যে জটিল সংখ্যার সাথে জড়িত প্রোগ্রামিংয়ে নেতিবাচক শূন্য প্রতিনিধিত্ব থাকা অত্যন্ত গুরুত্বপূর্ণ। জটিল সংখ্যার সাথে জড়িত কোড লেখার সুযোগ আমি কখনই পাইনি, তাই কেন এটি হবে তা নিয়ে আমি একটু বিস্মিত হই।

ধারণা সম্পর্কিত উইকিপিডিয়ায় নিবন্ধটি বিশেষভাবে সহায়ক নয়; এটি সঠিকভাবে স্বাক্ষরিত শূন্য সম্পর্কে কিছু গাণিতিক ক্রিয়াকলাপকে ভাসমান স্থানে সহজতর করার বিষয়ে অস্পষ্ট দাবি করে, যদি আমি সঠিকভাবে বুঝতে পারি। এই উত্তরটিতে বেশ কয়েকটি কার্যকারিতা তালিকাবদ্ধ করা হয়েছে যা আলাদাভাবে আচরণ করে এবং উদাহরণস্বরূপ যদি আপনি সেগুলি কীভাবে ব্যবহার করতে পারেন তার সাথে পরিচিত হন তবে কিছু থেকে অনুমান করা যেতে পারে। (যদিও, জটিল বর্গাকার শিকড়গুলির বিশেষ উদাহরণটি ভুল দেখায়, যেহেতু দুটি সংখ্যার গাণিতিক সমতুল্য, যদি না আমার কোনও ভুল বোঝাবুঝি হয়)) তবে আমি সেখানে না থাকলে কী ধরণের সমস্যার মুখোমুখি হতে পারি তার একটি পরিষ্কার বক্তব্য আমি খুঁজে পেতে পারিনি। আমি যত বেশি গাণিতিক সংস্থান পেয়েছি তা খুঁজে পেতে সক্ষম হয়েছি যে গাণিতিক দৃষ্টিকোণ থেকে দুজনের মধ্যে কোনও পার্থক্য নেই এবং উইকিপিডিয়া নিবন্ধে মনে হয়েছে যে সীমা বর্ণনাকে বাদ দিয়ে কম্পিউটারের বাইরে এটি খুব কমই দেখা যায়।

তাহলে কম্পিউটারে নেতিবাচক শূন্য কেন মূল্যবান? আমি নিশ্চিত যে আমি কিছু মিস করছি।


6
নেতিবাচক শূন্য একটি আইইইই ভাসমান পয়েন্ট সংখ্যাতে আন্ডারফ্লো সংকেত দিতে পারে, তবে এর বাইরে, এর ব্যবহারটি বিতর্কিত এবং অস্পষ্ট বলে মনে হয়। যদি আমি অনুমান করতে পারি তবে আমি বলব যে আইইইই ভাসমান পয়েন্টে নেতিবাচক শূন্যকে প্রতিনিধিত্ব করা হয়েছে কারণ ... ভাল, আপনি পারেন। আরও আকর্ষণীয় যাত্রার জন্য, ফ্লোটিং পয়েন্ট সিএনএলিং এনএএন সম্পর্কিত তথ্য সন্ধান করুন।
রবার্ট হার্ভে

1
নির্দিষ্ট উদাহরণটি যদি "1 / 0.0" / "1 / -0.0" হয় তবে 0 হল 1 / x এর জন্য একটি শাখা কাটা এবং আপনি নীচে বা উপরে থেকে যোগাযোগ করলে সীমাটি নির্ভর করে।
ভ্যাটাইন

@ ভ্যাটাইন নো, বিশেষ উদাহরণটি হ'ল sqrt(-1+0i) = iএবং sqrt(-1-0i) = -iযদিও কিছু প্রোগ্রামিং ভাষার জন্য উপযুক্ত বাক্য গঠন রয়েছে, আমি বিশ্বাস করি। আমি আরও পরিষ্কার হতে সম্পাদনা করব।
jpmc26

3
আমি প্রোগ্রামারস , স্ট্যাক ওভারফ্লো , কম্পিউটার সায়েন্স , গণিত এবং ইঞ্জিনিয়ারিং অনুসন্ধান করেছি । আমি যে প্রশ্নটি কেবলমাত্র খুঁজে পেতে পারি তা নেগেটিভ শূন্য ভাসমান পয়েন্ট মানের জন্য? । এটি কেবল দ্বিতীয়বারের মতো হতে পারে না!

আমি সত্যিই আশ্চর্য হয়েছি যে জটিল সংখ্যাগুলি উত্তরগুলিতে মোটেও আসে নি, বিশেষত বর্গমূলের উদাহরণটি আমি দেখিয়েছি।
jpmc26

উত্তর:


69

আপনার মনে রাখতে হবে যে এফপিইউ পাটিগণিতগুলিতে 0 এর অবশ্যই সঠিক শূন্য হওয়া উচিত নয়, তবে প্রদত্ত ডেটাটাইপ ব্যবহার করে প্রতিনিধিত্ব করার জন্য খুব ছোট মানও উল্লেখ করা উচিত, যেমন

a = -1 / 1000000000000000000.0

এটিকে ভাসা (32 বিট) দ্বারা সঠিকভাবে উপস্থাপন করতে খুব ছোট, তাই এটি -0 থেকে "গোলাকার" হয়।

এখন, আমাদের গণনা অবিরত বলে দিন:

b = 1 / a

যেহেতু একটি ভাসমান, এর ফলে -infinity ফলাফল আসবে যা -100000000000000000000.0 এর সঠিক উত্তর থেকে বেশ দূরে

এখন আসুন বি -0 না থাকলে বি গণনা করুন (সুতরাং এটি একটি গোলকে +0 তে পরিণত করা হবে):

b = 1 / +0
b = +infinity

গোলটি করার কারণে ফলাফলটি আবারও ভুল, তবে এখন এটি "আরও ভুল" - কেবল সংখ্যাগতভাবেই নয়, তবে আরও গুরুত্বপূর্ণভাবে বিভিন্ন চিহ্নের কারণে (গণনার ফলাফলটি + অনন্ত, সঠিক ফলাফলটি -100000000000000000000.0)।

আপনি এখনও বলতে পারেন যে এটি উভয়ই ভুল হিসাবে সত্যই আসে না। গুরুত্বপূর্ণ বিষয়টি হ'ল প্রচুর সংখ্যাযুক্ত অ্যাপ্লিকেশন রয়েছে যেখানে গণনার সর্বাধিক গুরুত্বপূর্ণ ফলাফলটি হ'ল লক্ষণ - উদাহরণস্বরূপ যখন কোনও মেশিন লার্নিং অ্যালগরিদম ব্যবহার করে ক্রসরোডে বাম বা ডানদিকে ঘুরবেন কিনা তা সিদ্ধান্ত নেওয়ার পরে আপনি ইতিবাচক মান => টার্ন ব্যাখ্যা করতে পারবেন বাম, নেতিবাচক মান => ডানদিকে ঘুরুন, মানটির প্রকৃত "মাত্রা" কেবল "আত্মবিশ্বাসের সহগ"।


কল্পিত / জটিল সংখ্যা গণনার জন্য আন্ডারফ্লো সাইনটি বিশেষভাবে গুরুত্বপূর্ণ হতে পারে কিনা সে সম্পর্কে আপনার কোনও ধারণা আছে?
jpmc26

@ কিবিডি: আপনি কি জানেন যে এই সংখ্যাগুলির প্রয়োগগুলি কী? আমি বলব যে প্রোগ্রামগুলি ট্রিগার এবং ব্যবহার +infএবং -infসাধারণ ক্রিয়াকলাপগুলিতে বাগড হয়।
বিজন লিন্ডকভিস্ট

@ BjörnLindqvist আপনি যদি কংক্রিট, ডাউনলোডযোগ্য অ্যাপ্লিকেশন চান - তবে আমি কোনও কিছুই জানি না। আমি মনে করি না যে এটি অগভীর বগি - ফ্লোট / ডাবলের পরিবর্তে আপনি সীমাহীন নির্ভুলতার সাথে বিগডিসিমালের মতো কিছু ব্যবহার করতে পারেন। তবে যখন প্রোগ্রামটি ভাসা / ডাবল সহ ঠিক একই ফলাফল দেয় তবে এটি আরও খারাপ কর্মক্ষমতা সহকারে কি উপযুক্ত?
কিউবিডি

আপনি "সংখ্যাসূচক অ্যাপ্লিকেশন যেখানে গণনার সবচেয়ে গুরুত্বপূর্ণ ফল চিহ্ন" আমি সেটা বিশ্বাস করতে পারেন লিখেছেন, কিন্তু আমি বিশ্বাস করতে পারছি না কোন ভালো করে লেখা অ্যাপ্লিকেশন -0 উপর এবং মান হচ্ছে উপর নির্ভর আছে +infএবং -inf। যদি আপনার প্রোগ্রামটির ফলে ভাসমান পয়েন্ট আন্ডারফ্লো হয়, তবে এটি ত্রুটি এবং পরে যা ঘটে তা তাই আকর্ষণীয় নয় im আমরা এখনও ব্যবহারিক উদাহরণ মিস করছি যা -0 দরকারী।
Björn Lindqvist

1
@ বিজার্ন লিন্ডকভিস্ট x265 এর বৃহত অংশটি সমাবেশে করা হয়, তার অস্পষ্ট বিবরণের উপর নির্ভর করে (যা সিপিইউ আর্কিটেকচারের উপর নির্ভরশীল) পারফরম্যান্সের নামে খুব কম লোকই জানেন। এটা কি ভুল? পারফরম্যান্সের নামে একটি সাধারণ, ভালভাবে বোঝা বৈশিষ্ট্যের জন্য হ'ল হঠাৎ এত খারাপ মনে হয় না 30 বছরের পুরানো মানক (যা এখানেই রয়েছে) এর উপর নির্ভর করা lying
কিবিডি

8

প্রথমত, আপনি কীভাবে একটি -0 তৈরি করবেন? দুটি উপায় রয়েছে: (1) একটি ভাসমান-বিন্দু অপারেশন করুন যেখানে গাণিতিক ফলাফলটি নেতিবাচক, তবে শূন্যের এত কাছে যে এটি গোলাকৃত হয়ে যায় এবং শূন্য নয় এমন সংখ্যায় নয়। যে গণনা একটি -0 দেবে। (খ) শূন্যের সাথে জড়িত কয়েকটি ক্রিয়াকলাপ: positiveণাত্মক সংখ্যায় ধনাত্মক শূন্যকে গুণিত করুন, বা ধনাত্মক শূন্যকে negativeণাত্মক সংখ্যায় ভাগ করুন, বা ধনাত্মক শূন্যকে প্রত্যাখ্যান করুন।

Negativeণাত্মক শূন্য থাকায় গুণ এবং বিভাগকে কিছুটা সহজ করা যায়, x * y বা x / y এর চিহ্ন সর্বদা এক্স, একচেটিয়া বা y এর চিহ্ন। Negativeণাত্মক শূন্য না থাকলে -0 এর সাথে +0 প্রতিস্থাপন করতে কিছু অতিরিক্ত চেক করতে হবে।

কিছু বিরল পরিস্থিতি রয়েছে যেখানে এটি কার্যকর। কোনও গুণের বা বিভাগের ফলাফল গাণিতিকভাবে শূন্যের চেয়েও বেশি বা কম কিনা তা পরীক্ষা করে দেখতে পারেন, এমনকি যদি কোনও আন্ডারফ্লো থাকে (যতক্ষণ আপনি জানেন যে ফলাফলটি গাণিতিক শূন্য নয়)। আমি কখনই লিখিত কোড রাখার কথা মনে করতে পারি না যেখানে এটি একটি পার্থক্য করে।

সংযোজকগুলি ঘৃণা করে -0। উদাহরণস্বরূপ, আপনি x + 0.0 কে x এর সাথে প্রতিস্থাপন করতে পারবেন না, কারণ x -0.0 হলে ফলাফলটি x হওয়া উচিত নয়। আপনি x * ০.০ এর সাথে প্রতিস্থাপন করতে পারবেন না, কারণ x <0 বা x -0.0 হলে ফলাফল -0.0 হওয়া উচিত।


7
আমি আশা করি আইইইই-75 75৪ চারটি শূন্য অন্তর্ভুক্ত করেছিল: "নির্ভুল", ধনাত্মক ইনফিনিটসিমাল, নেতিবাচক অসীম এবং স্বাক্ষরবিহীন (পরেরটি অবিচ্ছেদ্য মানগুলির মধ্যে পার্থক্য)। এটি করার ফলে প্রচুর ভাসমান-বিন্দু অক্ষরেখার কাজ হয়ে যেত - তাদের মধ্যে, এক্স + ০.০ সমতুল্য এক্স-০.০ সমপরিমাণ x, এক্স ওয়াইফ এক্স + (- ১.০) * ওয়াই এবং ১.০ / এক্স সমতুল্য -১.০ / (- ১.০ *) x) [x যদি ধনাত্মক শূন্য হয় তবে উভয়ই পোজ-ইনফ; যদি নেগ-শূন্য হয় তবে উভয়ই নেং-ইনফ; যথাযথ বা স্বাক্ষর না থাকলে, উভয়ই এনএএন]।
ক্যাট

আমি পাস -5এবং 5প্রবেশ করে একটি নেতিবাচক শূন্য পেতে সক্ষম হয়েছি fmod()। এটি আমার ব্যবহারের ক্ষেত্রে যথেষ্ট বিরক্তিকর।
অ্যারন ফ্র্যাঙ্ক

6

সি # ডাবল যা আইইইই 754 অনুসারে

    double a = 3.0;
    double b = 0.0;
    double c = -0.0;

    Console.WriteLine(a / b);
    Console.WriteLine(a / c);

কপি করে প্রিন্ট:

Infinity
-Infinity

আসলে একটু ব্যাখ্যা করার জন্য ...

Double d = -0.0; 

এর অর্থ ডি = The Limit of x as x approaches 0-বা এর কাছাকাছি কিছু The Limit of x as x approaches 0 from the negatives


ফিলিপের মন্তব্যটি সম্বোধন করতে ...

মূলত নেতিবাচক শূন্য মানে আন্ডারফ্লো।

নেতিবাচক শূন্যের জন্য খুব কম ব্যবহারিক ব্যবহার আছে যদি কোন ...

উদাহরণস্বরূপ, এই কোড (আবার সি #):

double a = -0.0;
double b = 0.0;

Console.WriteLine(a.Equals(b));
Console.WriteLine(a==b);
Console.WriteLine(Math.Sign(a));

এই ফলাফল দেয়:

True
True
0

অনানুষ্ঠানিকভাবে ব্যাখ্যা করতে, একটি আইইইই 754 ভাসমান পয়েন্টের যে সমস্ত বিশেষ মান রয়েছে তার সবগুলি (ধনাত্মক অনন্ত, নেতিবাচক অনন্ত, এনএএন, -0.0) এর ব্যবহারিক অর্থে কোনও অর্থ নেই। তারা কোনও বাস্তব শারীরিক মান বা এমন কোনও মান উপস্থাপন করতে পারে না যা "রিয়েল ওয়ার্ল্ড" গণনায় অনুভূত হয়। এগুলির অর্থ মূলত এটি:

  • ধনাত্মক অনন্ত অর্থ একটি ভাসমান পয়েন্ট প্রতিনিধিত্ব করতে পারে ইতিবাচক শেষে একটি ওভারফ্লো
  • নেতিবাচক অনন্ত অর্থ একটি ভাসমান পয়েন্ট প্রতিনিধিত্ব করতে পারে ইতিবাচক শেষে একটি ওভারফ্লো
  • নেতিবাচক শূন্য মানে একটি আন্ডারফ্লো এবং অপারেন্ডগুলির বিপরীত লক্ষণ ছিল
  • ধনাত্মক শূন্যের অর্থ একটি আন্ডারফ্লো হতে পারে এবং অপারেন্ডগুলির একই চিহ্ন রয়েছে
  • এনএএন এর অর্থ আপনার গণনাটি সুস্পষ্টভাবে অপরিজ্ঞাত, পছন্দ sqrt(-7)মতো 0/0বা এর মতো বা পছন্দ মতো কোনও সীমা নেই PositiveInfinity/PositiveInfinity

7
হ্যাঁ, তবে কেন এটি গুরুত্বপূর্ণ? পার্থক্যটি গুরুত্বপূর্ণ যেখানে আপনি একটি বাস্তব, বাস্তব-বিশ্বের উদাহরণ সরবরাহ করতে পারেন?
ফিলিপ

5

এটি জটিল-সংখ্যার গণনার সাথে কীভাবে সম্পর্কিত তা প্রশ্নটি কেন +0 এবং -0 উভয়ই ভাসমান-পয়েন্টে বিদ্যমান তা কেন্দ্রে আসে। আপনি যদি কমপ্লেক্স অ্যানালাইসিস অল্প অধ্যয়ন করেন তবে আপনি দ্রুত আবিষ্কার করতে পারেন যে কমপ্লেক্স থেকে কমপ্লেক্সে অবিচ্ছিন্ন ক্রিয়াকলাপগুলি সাধারণত 'একক-মূল্যবান' হিসাবে বিবেচনা করা যায় না যদি না কেউ 'ভদ্র কথাসাহিত্য' অবলম্বন করে যে ফলাফলগুলি 'রিমন সারফেস' হিসাবে পরিচিত is উদাহরণস্বরূপ, জটিল লোগারিদম প্রতিটি ইনপুট অসীম বহু আউটপুট বরাদ্দ করে; যখন আপনি একটি অবিচ্ছিন্ন আউটপুট গঠনে 'সেগুলিকে সংযুক্ত করেন', তখন আপনি বাস্তবের সমস্ত অংশ সমাপ্ত করে মূলটির চারপাশে একটি 'অসীম কর্কস্ক্রু' পৃষ্ঠ গঠন করেন। একটি ধ্রুবক বক্ররেখা যা আসল অক্ষকে 'ধনাত্মক-কাল্পনিক দিক থেকে নিম্নমুখী' এবং অন্য একটি বক্ররেখা যা 'পোলের চারপাশে মোড়ানো' এবং আসল অক্ষটি অতিক্রম করে '

জটিল স্লোটিং পয়েন্ট ব্যবহার করে গণনা করা এমন একটি সংখ্যাসূচক প্রোগ্রামে এখন এটি প্রয়োগ করুন। প্রদত্ত গণনার পরে গৃহীত পদক্ষেপটি 'শিট' প্রোগ্রামটি বর্তমানে 'চালু আছে' তার উপর নির্ভর করে খুব পৃথক হতে পারে এবং শেষ গণনার ফলাফলের চিহ্নটি আপনাকে সম্ভবত কোন 'শীট' বলে দেয়। এখন ধরুন যে ফলাফলটি শূন্য ছিল? মনে রাখবেন, এখানে 'শূন্য' এর অর্থ 'সঠিকভাবে উপস্থাপন করা খুব ছোট'। তবে যদি ফলাফলটি শূন্য হয় তখন গণনাটি সাইন- (যেমন কোন 'শিটটি মনে রাখবেন') সংরক্ষণের ব্যবস্থা করতে পারে তবে কোডটি সাইনটি পরীক্ষা করতে পারে এবং এই পরিস্থিতিতে এমনকি সঠিক ক্রিয়া সম্পাদন করতে পারে।


1

কারণটি স্বাভাবিকের চেয়ে সহজ

অবশ্যই অনেকগুলি হ্যাক রয়েছে যা দেখতে দেখতে দুর্দান্ত লাগছে এবং সেগুলি দরকারী (যেমন বৃত্তাকার -0.0বা +0.0অনুমান করি তবে শুরুতে একটি বিয়োগ / প্লাস চিহ্ন সহ আমাদের স্বাক্ষরিত ইন্টের উপস্থাপনা রয়েছে (আমি জানি যে ইউ 2 বাইনারি কোড দ্বারা সমাধান করা হয়েছে পূর্ণসংখ্যায় সাধারণত তবে দ্বিগুণের কম জটিল উপস্থাপনা অনুমান):

0 111 = 7
^ sign

নেগেটিভ সংখ্যা থাকলে কী হবে?

1 111 = -7

ঠিক আছে, সহজ। সুতরাং আসুন 0 প্রতিনিধিত্ব করুন:

0 000 = 0

খুব ভাল। তবে কি 1 000? এটি কি একটি নিষিদ্ধ নম্বর হতে হবে? না করলেই ভালো.

সুতরাং ধরে নেওয়া যাক শূন্যের দুই প্রকার রয়েছে:

0 000 = +0
1 000 = -0

ঠিক আছে, এটি আমাদের গণনাগুলি সহজতর করবে এবং সুনির্দিষ্টভাবে কিছু অতিরিক্ত বৈশিষ্ট্যগুলি সরবরাহ করবে। সুতরাং +0এবং -0কেবল বাইনারি প্রতিনিধিত্বমূলক সমস্যাগুলি থেকে আসছে।


6
যদি আমি এটি সঠিকভাবে পড়ছি তবে আপনি মূলত লোকদের মানদণ্ডগুলি সংজ্ঞায়িত বা বাস্তবায়ন করার ক্ষেত্রে বলছেন যে এটি নিষিদ্ধ করার সমস্যায় যেতে চান না। আমি মনে করি না যে এই যুক্তিটি সম্পূর্ণভাবে পৃথক সংখ্যার জন্য "নেতিবাচক শূন্য" উপস্থাপনা ব্যবহার করে এবং নেতিবাচক শূন্যের কোনও উপস্থাপনা নেই এই সত্যটি ধরে রেখেছে। আমি লিঙ্কিত উইকিপিডিয়া নিবন্ধ দেখুন।
jpmc26

1
@ jpmc26 আমি মনে করি বাস্তবে এর কিছু সত্যতা আছে, এটিকে নিষেধ না করা মানে একটি বিশেষ মামলা করার জন্য বাস্তবায়ন প্রয়োজন হয় না। যেমনটি হয়, প্রতিটি সংখ্যার একটি স্বাক্ষর বিট থাকে এবং সাইন বিট টগল করে এড়িয়ে যাওয়া যায় can এমনকি এনএনও স্বাক্ষরিত হয়, এবং এনএএনএন উত্পাদন করার সময় বাস্তবায়নগুলি (তবে প্রয়োজন হয় না) একটি উপযুক্ত সাইন বেছে নিতে পারে। যদি negativeণাত্মক শূন্য উপস্থিত না থাকে তবে 0 এর ফলে প্রতিটি গণনার জন্য সাইন বিট ইত্যাদি ঠিক করার জন্য অতিরিক্ত কাজ করা দরকার
হবস

4
@ jpmc26 (অর্থাত্ দুটি সংখ্যার প্রতিটি অন্যান্য গুণে, ফলাফলের চিহ্নটি বহু গুণগুলির চিহ্নের জোড়, এবং দৈর্ঘ্য দুটি মাত্রার গুণফল real বাস্তব জীবনে এটি -1 * 0 = - ০. তবে যদি শূন্যের সাথে বিটটি উল্টানো হয় তবে কিছু বিশেষ ননজারো মান ছিল, প্রতিটি পণ্য যে 0 উত্পাদন করতে পারে তা পরীক্ষা করে নিশ্চিত করতে হবে যে এটি ভুল দ্বারা সেই বিশেষ মানটি উত্পাদন করে না।)
হবস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.