কীভাবে বিটওয়াস পরিপূরক অপারেটর (il টিল্ড) কাজ করে?


উত্তর:


279

মনে রাখবেন যে negativeণাত্মক সংখ্যাগুলি ধনাত্মক অংশের দুটির পরিপূরক হিসাবে সঞ্চয় করা হয় । উদাহরণ হিসাবে, এখানে দুটি পরিপূরক -2 এর উপস্থাপনা: (8 বিট)

1111 1110

আপনি যেভাবে পাচ্ছেন তা হ'ল কোনও সংখ্যার বাইনারি উপস্থাপনা নেওয়া, এর পরিপূরক নেওয়া (সমস্ত বিট উল্টানো) এবং একটি যোগ করা। দুটি 0000 0010 হিসাবে শুরু হয় এবং বিটগুলি উল্টিয়ে আমরা 1111 1101 পাই one একটি যোগ করে আমাদের উপরের ফলাফলটি পেয়ে যায়। প্রথম বিটটি হ'ল সাইন বিট, একটি নেতিবাচক বোঝায়।

সুতরাং আসুন আমরা কীভাবে ~ 2 = -3 পাই তা একবার দেখে নিই:

এখানে আবার দুটি:

0000 0010

কেবলমাত্র সমস্ত বিটগুলি ফ্লিপ করুন এবং আমরা পাই:

1111 1101

আচ্ছা, দু'জনের পরিপূরকটিতে -3 দেখতে কেমন? ধনাত্মক 3: 0000 0011 দিয়ে শুরু করুন, সমস্ত বিটগুলি 1111 1100 এ ফ্লিপ করুন এবং একটিকে নেতিবাচক মান (-3), 1111 1101 হয়ে উঠুন।

সুতরাং আপনি যদি 2-এ বিটগুলি সহজভাবে উল্টান, আপনি দুটি-এর পরিপূরক প্রতিনিধিত্ব পাবেন -3।

পরিপূরক অপারেটর (~) জাস্ট ফ্লিপ বিটস। এই বিটগুলি ব্যাখ্যা করার জন্য এটি মেশিনের উপর নির্ভর করে।


43
আরেকটি বিষয় সম্ভবত উল্লেখ করতে পারা যায় যে ফ্লিপটিকে 1 যোগ করার আগে 1 এস পরিপূরক বলা হয়
ক্রিস এস

3
এটি অন্যের জন্য সহায়তা করতে পারে যারা একের পরিপূরক এবং দুই এর পরিপূরক সম্পর্কে সচেতন নয়। তাদের সম্পর্কে এখানে পড়ুন। en.wikedia.org/wiki/Ones%27_complement en.wikedia.org/wiki/Two%27s_complement
সাঁই

1
এটি কি বিটওয়াইস অপারেটর নয়?
ব্র্যাডেন সেরা

3
কীভাবে যন্ত্রটি জানবে যে এটি উচ্চতর ধনাত্মক সংখ্যার পরিবর্তে দুটি পরিপূরক নেতিবাচক নম্বর পাচ্ছে? এটি কি স্বতন্ত্র ভাষার টাইপ সিস্টেমের কারণে ইঙ্গিত করে যে প্রকারটি স্বাক্ষরবিহীন বনাম কোনও স্বাক্ষরযুক্ত?
GL2014

@ GL2014 আমি মনে করি আপনি সেখানে নিজের প্রশ্নের উত্তর দিয়েছেন। আমার বোধে, মেশিনটি প্রথম স্থানে কাজ করার জন্য তৈরি করা হয়েছিল।
গিকিধারার

40

~ মান বিট উল্টানো।

সংখ্যাগুলি কীভাবে সামান্য দিকের উপস্থাপন করা ~2হয় -3তা কেন করা হয় । সংখ্যা দুটি এর পরিপূরক হিসাবে প্রতিনিধিত্ব করা হয় ।

সুতরাং, 2 বাইনারি মান হয়

00000010

এবং ~ 2 বিটগুলি ফ্লিপ করে তাই মানটি এখন:

11111101

কোনটি -3 এর বাইনারি উপস্থাপনা।


2
11111101 == দশমিক 253 বনাম -3 নয়?
একেএস

10
নির্ভর করে যদি এটি কোনও স্বাক্ষরিত বা স্বাক্ষরবিহীন পূর্ণসংখ্যার প্রতিনিধিত্ব করে।
ড্রিসটি

18

অন্যরা যেমন উল্লিখিত ~বিটগুলি উল্লেখ করেছেন (এক থেকে শূন্য এবং এক থেকে শূন্য পরিবর্তন) এবং যেহেতু দু'জনের পরিপূরক ব্যবহৃত হয় আপনি ফল পেয়েছেন।

একটি জিনিস যুক্ত করার জন্য হ'ল দু'জনের পরিপূরকটি কেন ব্যবহৃত হয়, এটি এমন যে নেতিবাচক সংখ্যার ক্রিয়াকলাপগুলি ইতিবাচক সংখ্যার মতো হবে the চিন্তা করুন -3নম্বর যার হিসেবে 3অনুক্রমে যুক্ত করা উচিত শূন্য পেতে এবং আপনি দেখতে পাবেন এই নম্বরে যে 1101, মনে রাখবেন যে বাইনারি উপরন্তু শুধু প্রাথমিক স্কুল (দশমিক) -এর মত উপরন্তু কেবলমাত্র আপনি এক বহন যখন আপনি দুই বদলে 10 পাবেন ।

 1101 +
 0011 // 3
    =
10000
    =
 0000 // lose carry bit because integers have a constant number of bits.

অতএব 1101হয় -3, বিট আপনি পেতে টুসকি 0010যা দুটি।


8

এই অপারেশন একটি পরিপূরক, একটি অবহেলা নয়।

এটি ~ 0 = -1 বিবেচনা করুন এবং সেখান থেকে কাজ করুন।

প্রত্যাখ্যানের জন্য অ্যালগরিদম হ'ল "পরিপূরক, বৃদ্ধি"।

তুমি কি জানতে? এছাড়াও এখানে "একজনের পরিপূরক" কোথায় বিপরীত সংখ্যার হয় প্রতিসম, এবং এটি উভয় একটি 0 এবং একটি আছে -0।


6

আমি জানি এই প্রশ্নের উত্তর অনেক আগে পোস্ট করা হয়েছে তবে আমি আমার উত্তরটি তার জন্য ভাগ করে নিতে চেয়েছিলাম।

সংখ্যার পরিপূরক সন্ধানের জন্য প্রথমে এর বাইনারি সমতুল্য সন্ধান করুন। এখানে, দশমিক সংখ্যা বাইনারি ফর্ম 2হিসাবে প্রতিনিধিত্ব করা 0000 0010হয়। এখন এর পরিপূরকটি উল্টিয়ে (1 এর সমস্ত 1 টি 0 এর মধ্যে এবং সমস্ত 0 এর 1 এর মধ্যে 1) এর বাইনারি উপস্থাপনার সমস্ত সংখ্যার, যার ফলস্বরূপ হবে:

0000 0010 → 1111 1101

এটি দশমিক সংখ্যা 2 এর মধ্যে একটির পরিপূরক And এবং প্রথম বিট, অর্থাত্, বাইনারি সংখ্যায় সাইন বিটটি 1, এর অর্থ এটি সাইনটি সঞ্চিত সংখ্যার জন্য নেতিবাচক । (এখানে, সংখ্যা উল্লেখ করা হয় না 2 কিন্তু 2 একজনের পরিপূরক)।

এখন, যেহেতু সংখ্যাগুলি 2 এর পরিপূরক হিসাবে গণ্য করা হয় (যার সাথে একটি সংখ্যার অতিরিক্ত একের পরিপূরক গ্রহণ করা হয়), তাই এই বাইনারি সংখ্যাটি 1111 1101দশমিক হিসাবে প্রদর্শন করতে প্রথমে আমাদের এর 2 এর পরিপূরকটি খুঁজে বের করতে হবে যা হবে:

1111 1101 → 0000 0010 + 1 → 0000 0011

এটি 2 এর পরিপূরক। বাইনারি সংখ্যার দশমিক প্রতিনিধিত্ব 0000 0011, হ'ল 3। এবং, যেহেতু উপরে উল্লিখিত হিসাবে সাইন বিটটি ছিল তাই ফলস্বরূপ উত্তরটি -3

ইঙ্গিত: আপনি যদি এই পদ্ধতিটি মনোযোগ সহকারে পড়েন তবে আপনি দেখতে পেয়েছেন যে কারও পরিপূরক অপারেটরের ফলাফলটি আসলে সংখ্যার (অপারেন্ড - যার উপর এই অপারেটরটি প্রয়োগ করা হয়) এবং একটি নেতিবাচক চিহ্ন সহ একটি। আপনি অন্যান্য সংখ্যা দিয়েও এটি চেষ্টা করে দেখতে পারেন।


এটি কেন দু'বার যুক্ত হচ্ছে? আমি দেখছি add, flip, add0010-> 0011-> 1100->1101
ব্র্যাডেন বেস্ট

1
এটি ফ্লিপ, ফ্লিপ, অ্যাড। 1 এর পরিপূরক জন্য প্রথম ফ্লিপ। এবং যেহেতু, এটি সিস্টেমে 2 এর পরিপূরকগুলিতে সঞ্চিত হয়, যখন আপনাকে সংখ্যাটি প্রদর্শন করার দরকার হয়, এটি 2 টি সঞ্চিত সংখ্যার পরিপূরক দেখায় (অর্থাত, দ্বিতীয় ফ্লিপ এবং যোগ করা)।
হিমাংশু আগরওয়াল

তবে কি উল্টবে না (ফ্লিপ (2)) কেবল 2? 0010 1101 0010
ব্র্যাডেন সেরা

হ্যাঁ এটি কেবল 2 হবে। বিটগুলি যখন মেমোরিতে সংরক্ষণ করা হয় তখন সবচেয়ে উল্লেখযোগ্য বিটটি 1 ছিল যা উপরের উত্তরে বর্ণিত হিসাবে পরে সংখ্যাকে নেতিবাচক করে তুলবে।
হিমাংশু আগরওয়াল

1
আপনি যা বর্ণনা করছেন এবং যা কিছু গবেষণা করেছেন তা থেকে এটি কোনও দুজনের পরিপূরক নয়, তবে একটি "নিয়মিত" পরিপূরক, বা কিছুটা উল্টো দিকে নয়। যুক্তিতে, NOT 0 = 1এবং NOT 1 = 0। চার বিট সিস্টেমে NOT 0011(3) = 1100(12 স্বাক্ষরিত, -4 স্বাক্ষরিত)। আমি যা বুঝি তার থেকে দুটির পরিপূরককে সংজ্ঞায়িত করা হয় (NOT n) + 1এবং বিটের সংখ্যা নির্বিশেষে কোনও সংখ্যার নেতিবাচক সমকক্ষকে খুঁজে পেতে ব্যবহৃত হয়। এইভাবে 2c(5) = -5,। দেখুন, এখন এটি সঠিক ধারণা তৈরি করে makes যতক্ষণ আপনি এই অপারেশনটিকে এটি বলে ঠিক ততক্ষণ: কিছুটা উলটে নয়।
ব্র্যাডেন সেরা

4

int a = 4; System.out.println (~ ক); ফলাফল হবে: -5

জাভাতে কোনও পূর্ণসংখ্যার '~' 1 এর সম্পূর্ণরূপে 2 এর পরিসংখ্যান উপস্থাপন করে। উদাহরণস্বরূপ, আমি ~ 4 নিচ্ছি, যার অর্থ বাইনারি উপস্থাপনা 0100. প্রথমত, একটি পূর্ণসংখ্যার দৈর্ঘ্য চার বাইট হয়, অর্থাৎ 4 * 8 (1 বাইটের জন্য 8 বিট) = 32। সুতরাং সিস্টেমের মেমোরিতে 4 টি 0000 0000 0000 0000 0000 0000 0000 0000 0100 হিসাবে প্রতিনিধিত্ব করা হয়েছে now অপারেটর উপরের বাইনারি নম্বরে 1 এর পরিপূরক সম্পাদন করবে

উদাহরণস্বরূপ 1111 1111 1111 1111 1111 1111 1111 1011-> 1 এর পরিপূরকটি সবচেয়ে উল্লেখযোগ্য বিট সংখ্যার (অথবা - অথবা +) যদি এটি 1 হয় তবে চিহ্নটি '-' যদি 0 হয় তবে চিহ্নটি '+' অনুযায়ী রয়েছে এটি আমাদের ফলাফলটি একটি নেতিবাচক সংখ্যা, জাভাতে নেতিবাচক সংখ্যাগুলি 2 এর পরিপূরক আকারে সংরক্ষণ করা হয়, অর্জিত ফলাফলটি আমাদের 2 এর পরিপূরকতে রূপান্তর করতে হবে (প্রথমে 1 এর পরিপূরক সম্পাদন করুন এবং কেবল 1 থেকে 1 এর পরিপূরক যোগ করুন)। সমস্ত উল্লেখযোগ্য বিট 1 ব্যতীত সমস্তই শূন্য হয়ে উঠবে (যা আমাদের সংখ্যার লক্ষণ প্রতিনিধিত্ব, যার অর্থ বাকি 31 বিট 1111 1111 1111 1111 1111 1111 1111 1011 (~ অপারেটরের প্রাপ্ত ফলাফল) 1000 0000 0000 0000 0000 0000 0000 0100 (1 এর পরিপূরক)

1 (2 এর পরিপূরক)

1000 0000 0000 0000 0000 0000 0000 0000 0101 এখন ফলাফল -5 ভিডিওটির জন্য এই লিঙ্কটি চেক আউট << [জাভাতে বিট বুদ্ধিমান অপারেটর] https://youtu.be/w4pJ4cGWe9Y


2

কেবল ...........

2 এর যে কোনও সংখ্যার পরিপূরক হিসাবে আমরা 1 টি যোগ করার চেয়ে সমস্ত 1 গুলি 0 এর বিপরীত করে উল্টো করে গণনা করতে পারি ..

এখানে N = ~ N ফলাফল উত্পন্ন করে - (N + 1) সর্বদা। কারণ 2 এর পরিপূরক আকারে সিস্টেম স্টোরের ডেটা যার অর্থ এটি ~ N এর মতো সঞ্চয় করে।

  ~N = -(~(~N)+1) =-(N+1). 

উদাহরণ স্বরূপ::

  N = 10  = 1010
  Than ~N  = 0101
  so ~(~N) = 1010
  so ~(~N) +1 = 1011 

এখন বিন্দুটি মাইনাস আসে সেখান থেকে। আমার মতামত মনে করুন আমাদের কাছে 32 বিট রেজিস্টার রয়েছে যার অর্থ 2 ^ 31 -1 বিট অপারেশনের সাথে জড়িত রয়েছে এবং একটি বিটকে বিশ্রাম দেওয়ার জন্য যা পূর্ববর্তী গণনে পরিবর্তন হয় (পরিপূরক) সাইন বিট হিসাবে সংরক্ষণ করা হয় যা সাধারণত 1 হয়। এবং আমরা 10 ডলার হিসাবে -11 হিসাবে ফলাফল পেতে।

~ (-11) = 10;

উপরেরটি সত্য হলে প্রিন্টফ ("% d", ~ 0); আমরা ফলাফল পেতে: -1;

তবে ফলাফলের চেয়ে মুদ্রণ ("% u",, 0): 32 বিট মেশিনে 4294967295।


1

বিটওয়াইস পরিপূরক অপারেটর (~) একটি অ্যানারি অপারেটর।

এটি নিম্নলিখিত পদ্ধতি অনুসারে কাজ করে

প্রথমে প্রদত্ত দশমিক সংখ্যাটিকে তার সম্পর্কিত বাইনারি মানকে রূপান্তর করে 2 এটি 2 এর ক্ষেত্রে এটি প্রথমে 2 থেকে 0000 0010 (8 বিট বাইনারি সংখ্যায়) রূপান্তর করে।

তারপরে এটি সংখ্যার সমস্ত 1 টি 0 তে এবং সমস্ত শূন্যকে 1 তে রূপান্তর করে; তখন সংখ্যাটি 1111 1101 হয়ে যাবে।

এটি -3 এর 2 এর পরিপূরক প্রতিনিধিত্ব।

পরিপূরক ব্যবহার করে স্বাক্ষরবিহীন মানটি সন্ধান করার জন্য, 1111 1101কে দশমিক (= 4294967293) রূপান্তর করতে আমরা কেবল মুদ্রণের সময়% u ব্যবহার করতে পারি।


1

আমি মনে করি বেশিরভাগ মানুষের জন্য বিভ্রান্তির অংশটি দশমিক সংখ্যা এবং স্বাক্ষরিত বাইনারি সংখ্যার মধ্যে পার্থক্য থেকে আসে, তাই প্রথমে এটি পরিষ্কার করে দেওয়া যাক:

মানব দশমিক বিশ্বের জন্য: 01 এর অর্থ 1, -01 অর্থ -1, কম্পিউটারের বাইনারি জগতের জন্য: 101 এর অর্থ 5 যদি এটি স্বাক্ষরবিহীন থাকে। 101 এর অর্থ (-4 + 1) যদি স্বাক্ষরিত হয় তবে সাইনড ডিজিটের অবস্থান x এ রয়েছে। | এক্স

সুতরাং 2 এর বিছানা বিট = ~ 2 = ~ (010) = 101 = -4 + 1 = -3 বিভ্রান্তিটি স্বাক্ষরিত ফলাফল (101 = -3) এবং আনইংযুক্ত ফলাফল (101 = 5) মেশানো থেকে আসে comes


1

tl; dr ~ বিটগুলি ফ্লিপ করে। ফলস্বরূপ সাইন পরিবর্তন হয়। ~2aণাত্মক সংখ্যা ( 0b..101)। আউটপুট একটি ঋণাত্মক সংখ্যা rubyপ্রিন্ট -, তারপর দুই এর সম্পূরক ~2: -(~~2 + 1) == -(2 + 1) == 3। ধনাত্মক সংখ্যাগুলি যেমন হয় আউটপুট।

একটি অভ্যন্তরীণ মান এবং এর স্ট্রিং প্রতিনিধিত্ব আছে। ইতিবাচক পূর্ণসংখ্যার জন্য, তারা মূলত:

irb(main):001:0> '%i' % 2
=> "2"
irb(main):002:0> 2
=> 2

পরেরটির সমতুল্য:

irb(main):003:0> 2.to_s
"2"

~অভ্যন্তরীণ মান বিট ফ্লিপ। 2হয় 0b010~2হয় 0b..101। দুটি বিন্দু ( ..) একটি অসীম সংখ্যার 1গুলি উপস্থাপন করে। যেহেতু ফলাফলটির সর্বাধিক উল্লেখযোগ্য বিট (এমএসবি) 1, ফলাফলটি negativeণাত্মক সংখ্যা ( (~2).negative? == true)। rubyA ণাত্মক সংখ্যা প্রিন্ট আউটপুট করতে -, তারপরে দুটি অভ্যন্তরীণ মানের পরিপূরক। দুইটির পরিপূরক বিটগুলি উল্টিয়ে, তারপরে যুক্ত করে গণনা করা হয় 1। দুটির পরিপূরক 0b..101হ'ল 3। যেমন:

irb(main):005:0> '%b' % 2
=> "10"
irb(main):006:0> '%b' % ~2
=> "..101"
irb(main):007:0> ~2
=> -3

সংক্ষিপ্তসার হিসাবে, এটি বিটগুলি ফ্লিপ করে, যা সাইন পরিবর্তন করে। একটি নেতিবাচক সংখ্যা আউটপুট করতে এটি প্রিন্ট করে -, তারপরে ~~2 + 1( ~~2 == 2)।

কারণ rubyআউটপুট ঋণাত্মক সংখ্যা তাই মত, কারণ এটি পরম মান একটি দুই এর সম্পূরক হিসেবে সংরক্ষিত মান একইরূপে হয়। অন্য কথায়, যা সঞ্চিত তা 0b..101। এটি একটি নেতিবাচক সংখ্যা এবং এর মতো এটি কোনও দু'টির কিছু মূল্যের পরিপূরক x। এটির জন্য এটি xদুটির পরিপূরক হয় 0b..101। যা দুটির পরিপূরক দুটি এর পরিপূরক x। যা x(যেমন ~(~2 + 1) + 1 == 2) eg

আপনি যদি ~নেতিবাচক সংখ্যার জন্য আবেদন করেন তবে এটি কেবল বিটগুলি ফ্লিপ করে (যা সাইন পরিবর্তন করে)

irb(main):008:0> '%b' % -3
=> "..101"
irb(main):009:0> '%b' % ~-3
=> "10"
irb(main):010:0> ~-3
=> 2

আরও বিভ্রান্তিকর বিষয় হ'ল ~0xffffff00 != 0xff(বা এমএসবি সমান অন্য কোনও মান 1)। এটা একটু সহজ করে করা যাক: ~0xf0 != 0x0f। কারণ এটি 0xf0ইতিবাচক সংখ্যা হিসাবে আচরণ করে । যা আসলে বোঝায়। তাই ~0xf0 == 0x..f0f,। ফলাফলটি নেতিবাচক সংখ্যা। দুটির পরিপূরক 0x..f0fহ'ল 0xf1। তাই:

irb(main):011:0> '%x' % ~0xf0
=> "..f0f"
irb(main):012:0> (~0xf0).to_s(16)
=> "-f1"

আপনি যদি ফলাফলটিতে বিটওয়াইড অপারেটরগুলি প্রয়োগ করতে যাচ্ছেন না, আপনি অপারেটর ~হিসাবে বিবেচনা করতে পারেন -x - 1:

irb(main):018:0> -2 - 1
=> -3
irb(main):019:0> --3 - 1
=> 2

কিন্তু এটি তাত্ক্ষণিকভাবে খুব বেশি ব্যবহারের নয়।

একটি উদাহরণ হিসাবে ধরা যাক আপনাকে একটি 8-বিট দেওয়া হয়েছে (সরলতার জন্য) নেটমাস্ক, এবং আপনি এর সংখ্যার গণনা করতে চান 0। আপনি বিটগুলি উল্টিয়ে এবং কল করে bit_length( 0x0f.bit_length == 4) কল করে এগুলি গণনা করতে পারেন । তবে ~0xf0 == 0x..f0f, তাই আমরা অনিবদ্ধ বিটগুলি কেটে ফেলেছি:

irb(main):014:0> '%x' % (~0xf0 & 0xff)
=> "f"
irb(main):015:0> (~0xf0 & 0xff).bit_length
=> 4

অথবা আপনি এক্সওআর অপারেটর ( ^) ব্যবহার করতে পারেন :

irb(main):016:0> i = 0xf0
irb(main):017:0> '%x' % i ^ ((1 << i.bit_length) - 1)
=> "f"

0

প্রথমে আমাদের প্রদত্ত অঙ্কটিকে তার বাইনারি অঙ্কগুলিতে বিভক্ত করতে হবে এবং তারপরে শেষ বাইনারি অঙ্কে যুক্ত করে বিপরীত করতে হবে this : 2 এস বাইনারি ফর্মটি 00000010 এ পরিবর্তিত হয় 11111101 এ এটি পরিপূরক, তারপর পরিপূরক 00000010 + 1 = 00000011 যা তিনটির বাইনারি ফর্ম এবং সাইন আই, -3 সহ


0

বিট-ওয়াইজ অপারেটর একটি অ্যানারি অপারেটর যা আমার অভিজ্ঞতা এবং জ্ঞান অনুসারে সাইন এবং প্রসারিত পদ্ধতিতে কাজ করে।

উদাহরণস্বরূপ ~ 2 এর ফলাফল -3 হবে।

এর কারণ, বিট-ওয়াইজ অপারেটর প্রথমে সাইন এবং প্রস্থে সংখ্যাটি উপস্থাপন করবে যা 0000 0010 (8 বিট অপারেটর) যেখানে এমএসবি সাইন বিট।

তারপরে এটি 2 নেগেটিভ সংখ্যা নেবে যা -2 হয়।

-2 সাইন এবং প্রস্থে 1000 0010 (8 বিট অপারেটর) হিসাবে উপস্থাপিত হয়।

পরে এটি LSB (1000 0010 + 1) এ 1 যুক্ত করে যা আপনাকে 1000 0011 দেয়।

যা -৩।


0

জাভাস্ক্রিপ্ট টিল্ড (~) তার পরিপূরককে প্রদত্ত মানকে জোর করে দেয় - সমস্ত বিট উল্টানো হয়। এটাই তো টিলডে করে। এটা মতামত স্বাক্ষর নয়। এটি কোনও পরিমাণ যোগ বা বিয়োগ করে না।

0 -> 1
1 -> 0
...in every bit position [0...integer nbr of bits - 1]

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

JavaScript Tilde operation (1's complement)

BASE2 lens
~0001 -> 1110  - end result of ~ bitwise operation

BASE10 Signed lens (typical JS implementation)
~1  -> -2 

BASE10 Unsigned lens 
~1  -> 14 

উপরের সমস্ত একই সাথে সত্য।


0

মূলত কর্মটি একটি উপকারের পরিপূরক নয়।

এখানে x = ~ x ফলাফল উত্পন্ন করে - (x + 1) সর্বদা।

x = ~ 2

- (2 + 1 টি)

-3

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.