আপনি নেতিবাচক সংখ্যাটিকে ইতিবাচক হিসাবে রূপান্তর করতে পারেন:
int myInt = System.Math.Abs(-5);
ধনাত্মক সংখ্যাটিকে negativeণাত্মক করার জন্য কি কোনও সমতুল্য পদ্ধতি আছে?
আপনি নেতিবাচক সংখ্যাটিকে ইতিবাচক হিসাবে রূপান্তর করতে পারেন:
int myInt = System.Math.Abs(-5);
ধনাত্মক সংখ্যাটিকে negativeণাত্মক করার জন্য কি কোনও সমতুল্য পদ্ধতি আছে?
উত্তর:
কেমন
myInt = myInt * -1
myInt = - Myint?
myInt *= - 1?
myShort = (short) -myShortকাস্টের সাহায্যে চেষ্টা করেন তবে শর্টটি যখন উপেক্ষিত হয় তখন ইন্টারটি হয়ে যায়।
int myNegInt = System.Math.Abs(myNumber) * (-1);
int negInt = -System.Math.Abs(myInt)
myInt<0 ? myInt : -myInt;অনেক ভাল। কেবলমাত্র - অপারেটরটিকে যথাযথ -1 * সংখ্যা প্লাস ওভারলোডিং সক্ষমতার জন্য শর্টহ্যান্ড হিসাবে সরবরাহ করা হয়, * (-1) কে কৌতুক করে না।
আপনি অন্য যে কোনও কিছুকে negativeণাত্মক করে তোলেন: তার সামনে একটি নেতিবাচক চিহ্ন রাখুন।
var positive = 6;
var negative = -positive;
int myNegInt = System.Math.Abs(myNumber) * (-1);
যারা প্রতিক্রিয়া জানিয়েছে তাদের প্রত্যেককে নোট করুন
- Math.Abs(myInteger)
অথবা
0 - Math.Abs(myInteger)
অথবা
Math.Abs(myInteger) * -1
নেতিবাচক সংখ্যাগুলিকে নেতিবাচক রাখার এবং ইতিবাচকগুলি নেতিবাচক করে তোলার উপায় হিসাবে।
এই পদ্ধতির একক ত্রুটি রয়েছে। এটি সমস্ত পূর্ণসংখ্যার জন্য কাজ করে না। Int32প্রকারের ব্যাপ্তি "-2 31 " থেকে "2 31 - 1" পর্যন্ত is এর অর্থ আরও একটি "negativeণাত্মক" নম্বর রয়েছে। ফলস্বরূপ, Math.Abs(int.MinValue)একটি ছুড়ে OverflowException।
সঠিক উপায় শর্তযুক্ত বিবৃতি ব্যবহার করা:
int neg = n < 0 ? n : -n;
এই পদ্ধতির "সমস্ত" পূর্ণসংখ্যার জন্য কাজ করে।
Abs) যা সম্ভবত কাজ করতে পারে না int.MinValue( intরিটার্নের ধরণ ধরে ধরে )) সেই ক্ষেত্রে, ব্যতিক্রম ছুঁড়ে ফেলা ঠিক OK তবে, এই নির্দিষ্ট সমস্যাটির "বৈধ" ফলাফল রয়েছে int.MinValueতবে আপনি যদি Absরাস্তাটি নেন তবে একটি ব্যতিক্রম ছোঁড়ে ।
nহয় -32768তবে -nALSO -32768!!! তদ্ব্যতীত int neg = n < 0 ? n : -n;কোনওটি একেবারে কিছুই করে না বলেই সম্ভবত সমস্ত ক্ষেত্রে সম্ভবত কাজ করা যায় না।
সহজ উপায়:
myInt *= -1;
আরও মজাদার জন্য:
int myInt = Math.Min(hisInt, -hisInt);
int myInt = -(int)Math.Sqrt(Math.Pow(Math.Sin(1), 2) + Math.Pow(Math.Cos(-1), 2))
* Math.Abs(hisInt);
সম্পাদনা: এটি ইতিবাচক ইনপুটগুলির জন্য ভুল ... আমি ভুলতে ভুল করেছিলাম যে -x- এর (2s- পরিপূরক মান) বাকী বিটগুলি তাদের x + এর মানের 'বিপরীত', একই নয়। কেবলমাত্র সাইন বিট পরিবর্তন করা ধনাত্মক সংখ্যার জন্য কাজ করবে না।
আমি এই উদ্দেশ্যে এখানে রেখে দেব ...
বা কৌশলে উপায় (আমার মনে হয়) ...
int y = x | ~ Int.MaxValue;
cause int.MaxValue is 0111 1111 1111 1111 1111 1111 1111 1111
সুতরাং
~int.MaxValue is 1000 0000 0000 0000 0000 0000 0000 0000
এবং অতএব যে কোনও অন্তর্গত 32 এর সাথে সাইন বিটটিতে একটি 1 রাখবে, (এটিকে নেতিবাচক করে তুলবে), এবং অন্য সমস্ত বিট একই রাখবে ...
সম্পাদনা: বাস্তবে, যেহেতু 1000 0000 0000 0000 0000 0000 0000 0000 0000 আসলে মাইনালু, তাই এটিও কাজ করা উচিত:
int y = x | int.MinValue; // or, to do it to itself,
x |= int.MinValue;
-number। 1সমস্ত শূন্য এবং এক। বা এর সাথে int.MinValueইঙ্গিত দেওয়ার ফলে 1000000000000000000000000000000001 ফলাফল হবে যা -1(সকলের সমান নয় )
যদিও আমি এখানে পার্টিতে দেরি করে ফেলেছি, আমি আমার হার্ডওয়ারের দিনগুলি থেকে কিছু দরকারী কৌশলগুলি দিয়েছি। এই সমস্ত স্বাক্ষরিত সংখ্যার জন্য 2 এর প্রশংসা উপস্থাপনা অনুমান করে।
int negate = ~i+1;
int positiveMagnitude = (i ^ (i>>31)) - (i>>31);
int negativeMagnitude = (i>>31) - (i ^ (i>>31));
i == int.MinValue, তারপরে সমস্ত ভেরিয়েবলগুলি -2147483648
শুধুই মজার জন্য:
int negativeInt = int.Parse(String.Format("{0}{1}",
"-", positiveInt.ToString()));
আপডেট : এই পদ্ধতির সৌন্দর্য হ'ল আপনি সহজেই এটি একটি ব্যতিক্রম জেনারেটরে রূপান্তর করতে পারেন:
int negativeInt = int.Parse(String.Format("{0}{1}",
"thisisthedumbestquestioninstackoverflowhistory", positiveInt.ToString()));
আমি ব্যবহার করি myInt = -myInt;
তাই সহজ এবং সহজ
আপনি যদি চান শুধুমাত্র ইতিবাচক
myInt = myInt>0 ? myInt : -myInt;
int.MaxValueহয় 2147483647, এমনকি var i = int.MaxValue; i++;অভ্যস্ত কাজ
long negativeNumber = (long)positiveInt - (long)(int.MaxValue + 1);
কেউই বলেনি যে এটি কোনও নির্দিষ্ট নেতিবাচক সংখ্যা হতে হবে ।
হয়তো এই?
int n;
.... some coding....
n = n<=0? n:0-n;
এটি -1 দ্বারা গুণ করুন।
একটি সংখ্যাকে ধনাত্মক থেকে নেতিবাচক বা নেতিবাচককে ধনাত্মক রূপান্তর করা:
public static decimal Reverse(this decimal source)
{
return source * decimal.MinusOne;
}
পূর্বে উল্লিখিত হিসাবে, কেবল -1 দ্বারা গুণ করা ভাল নয় int.MinValue * -1 == int.MinValue
এটি সত্যই আপনার আবেদনের উপর নির্ভর করে, তবে আমার জন্য (জয়স্টিক অক্ষগুলিকে উল্টানো) আমি নিশ্চিত করতে চাই যে সমস্ত চূড়ান্ততা এখনও পৌঁছতে পারে এবং যতটা সম্ভব নিষ্ঠারতা বজায় রাখা যায়।
এই লক্ষ্যে, আমি সর্বোচ্চ মানচিত্রটি <--> * -1
মিনিমাম এবং এর মধ্যে থাকা সমস্ত কিছুই এই কৌশলটি ব্যবহার করে পেয়ে যায়, -32767 ইনভার্ট করার সময় অ্যাক্সেসযোগ্য।
private static int Invert(int value)
{
if (value == int.MaxValue) return int.MinValue;
if (value == int.MinValue) return int.MaxValue;
return value * -1;
}
5হয় না -5, কিন্তু 1/5।
বাইনারি ব্যবহার করুন এবং সর্বশেষ বিটটি সরাতে যা নেতিবাচক চিহ্নের জন্য দায়ী।
বা বাইনারি ব্যবহার করুন বা একটি ডেটাটাইপ সাইন যোগ করতে।
এই দ্রাব্যটি অযৌক্তিক এবং অসম্পূর্ণ মনে হতে পারে তবে আমি গ্যারান্টি দিতে পারি এটি দ্রুততম পদ্ধতি।
আমি এই পোস্টটি যা পোস্ট করেছি তার সাথে যদি আপনি পরীক্ষা না করেন তবে খাঁজ দেখাতে পারে: ডি
উদাহরণস্বরূপ:
ইন্ট 32 বিট ডেটাটাইপ তাই শেষ বিট (32 তম) সাইনটি নির্ধারণ করে।
এবং এমন একটি মান সহ যা 0 টি 32 স্থানে রয়েছে এবং বাকি 1 টি। এটি নেতিবাচক নং + Ve তে রূপান্তর করবে।
ঠিক বিপরীতে বা একটি মান সহ 32 তম স্থানে এবং বিশ্রাম 0 করে।
X=*-1সমস্ত সংকলকগুলিতে কাজ নাও করতে পারে ... যেহেতু এটি নেতিবাচক পরিবর্তে একটি 'গুণ' 'সাবট্র্যাক্ট' 1 পড়েছে তবে আরও ভাল বেস্টটি হ'ল X=(0-X), [ যেটি থেকে বিভক্ত হয় X-=X]