যদি 32-বিট মেশিনগুলি কেবল 2 ^ 32 পর্যন্ত সংখ্যা পরিচালনা করতে পারে তবে আমি কেন আমার মেশিন ক্রাশ না করে 100000000000000 (ট্রিলিয়ন) লিখতে পারি?


370

32-বিট কম্পিউটারগুলি কেবল 2 31 - 1 অবধি স্বাক্ষরিত পূর্ণসংখ্যাগুলি সঞ্চয় করতে পারে
why এজন্য আমরা IPv4 ঠিকানার বাইরে চলে এসে 64৪-বিটের যুগে প্রবেশ করেছি।

তবে, সংখ্যাটি ৩১ - ১ (২,১77,48383,647।) ১ ট্রিলিয়ন (১,০০,০০,০০,০০০) এর মতো বড় নয় যা আমি আমার মেশিন ক্রাশ না করে জরিমানা প্রদর্শন করতে সক্ষম বলে মনে করি।

কেউ কেন ব্যাখ্যা করতে পারেন?


35
প্রশ্ন ত্রুটিযুক্ত। 32-বিট মেশিনগুলি 2 ^ 32 এর চেয়ে অনেক বড় সংখ্যাগুলি পরিচালনা করতে পারে। তারা 'লম্বা' ইত্যাদি দিয়ে সর্বদা এটি করে। তারা কেবলমাত্র একটি রেজিস্ট্রারে 2 ^ 32 পর্যন্ত সঞ্চয় করতে পারে তবে এই সমস্যাটি বাইপাস করার জন্য সফ্টওয়্যারটি লেখা আছে। কিছু আধুনিক ভাষায় প্রদত্ত সংখ্যার দৈর্ঘ্য নিয়েও সমস্যা নেই।
জেএফএ

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

6
এই প্রশ্নটি এমনভাবে লেখা হয়েছে যা কিছুটা opালু। 1000000000000 সংখ্যাটি "লিখুন" এবং "প্রদর্শন" বলতে কী বোঝ? আপনি যখন প্রশ্নটি লিখেছিলেন তখন আপনি 100000000000000 নাম্বারটি লিখেছিলেন এবং আপনার ওয়েব ব্রাউজারটি ঠিক এটি সূক্ষ্মভাবে প্রদর্শন করে, আমি ধরে নিয়েছি, তবে এটি আগে কখনও কম্পিউটার ব্যবহার করে এমন কারও কাছে আশ্চর্যজনক কিছু হওয়া উচিত নয়। প্রশ্ন বিনামূল্যে ব্যাখ্যা জন্য জিজ্ঞাসা।
হ্যালো গুডবাই

7
মানুষের চেতনা প্রায় 50 বিট ধরে রাখার অনুমান করা হয় (আমি কোথাও পড়েছি)। সুতরাং প্রশ্নটি " 10^9আমার পিসি ক্রাশ না হয়ে কীভাবে লিখব ?" তবে বরং "আমি 10^(18)আমার মস্তিষ্কের ক্রাশ না হয়ে কীভাবে লিখতে পারি?"
হেগেন ভন ইটজেন

1
৩২ বিট কম্পিউটারগুলি কেবল UNSIGNED পূর্ণসংখ্যা 2 ^ 32 - 1. 2 ^ 32 - 1 পর্যন্ত 2,147,483,647 ... 300-এর ভোটের সমান নয় এবং কেউ বুঝতে পারে না?
Koray Tugay

উত্তর:


784

আমি আপনাকে অন্য একটি প্রশ্ন জিজ্ঞাসা করে আপনার প্রশ্নের উত্তর:

আপনি আপনার আঙ্গুলের উপর 6 থেকে কীভাবে গুনবেন?

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


16
মজার, @ কোডনাম। তবে আপনি কীভাবে 32 বা ততোধিক আঙ্গুলগুলিতে গুনবেন (অর্থাত একবারে 2 ^ 5 নিঃশেষ হয়ে যায়)? ;) অন্যের হাতে যাওয়ার উপমা ভাল ... বাইনারি যদি কারও অন্য হাতে যাওয়ার প্রয়োজনে বিলম্ব করেও। আমি যেটি দেখতে চাই তা হল বাইনারিতে আরও গণনা করার জন্য নিজের পায়ের আঙ্গুলের দিকে যাওয়ার জন্য প্যাডিয়াল দক্ষতার সাথে 1,024 বা তারও বেশি গণনা করা - 1,048,575 অবধি! :) এটি সম্ভবত ডিনারবোর্ড পাওয়ারের 20 বিট। : পি
J0e3gan

14
এই উত্তরটির প্রযুক্তিগত দিকগুলি আলোচনা করার জন্য দয়া করে বিষয়গুলিতে মন্তব্যগুলি প্রাসঙ্গিক রাখুন। Answer০ টিরও বেশি রসিক মন্তব্য ইতিমধ্যে এই উত্তর থেকে মুছে ফেলা হয়েছে, এবং আমরা পোস্টটি লক করা এড়াতে চাই।
nhinkle

@ কোডনাম- সহজ, আপনি একটি আঙুলটিকে স্ট্যাক পয়েন্টার হিসাবে নির্ধারণ করুন। আঙুলগুলি শেষ হয়ে গেলে আপনি স্ট্যাকের পরিমাণটি যোগ করুন এবং গণনা পুনরায় আরম্ভ করবেন।
মাকচ 16'14

আপনি কোথায় কোডকেনাম শিখলেন? আমি ফ্রেডেরিক পোহলের কাছ থেকে এটি প্রথম শুনেছি, উদাহরণস্বরূপ দেখুন এখানে hjkeen.net/halqn/f_pohl3.htm
জেন

2
আমি মনে করি এটি প্রাসঙ্গিক প্রশ্নের উত্তর নয়। @ বিগবিও ২০০২ এর উত্তর সঠিক one এখানে "100000000000000" হ'ল একটি সংখ্যা নয় তবে একটি পাঠ্য, ঠিক যেমন "বিজ্ঞাপনফজেকনোরেগ্রেবগোরেগ্নেভেঞ্জ্রেজ"। আপনি যা বলছেন তা সত্য, তবে আমি দৃ strongly়ভাবে অনুভব করছি এটি সঠিক উত্তর নয়। এবং এতগুলি উপকার দেখতে ...
মাস্টার চিফ

398

আপনি সঠিক যে 32-বিট পূর্ণসংখ্যার 2 ^ 32-1 এর চেয়ে বেশি মান রাখা যায় না। তবে, 32-বিট পূর্ণসংখ্যার মান এবং এটি আপনার স্ক্রিনে কীভাবে প্রদর্শিত হয় তা দুটি সম্পূর্ণ আলাদা জিনিস different মুদ্রিত স্ট্রিং "100000000000000" মেমরির 32-বিট পূর্ণসংখ্যার দ্বারা প্রতিনিধিত্ব করে না।

আক্ষরিক অর্থে "100000000000000" সংখ্যাটি প্রদর্শনের জন্য 13 বাইট মেমরির প্রয়োজন। প্রতিটি পৃথক বাইট 255 অবধি মান ধারণ করতে পারে them এগুলির কোনওোটাই পুরো, সংখ্যাসূচক মান ধরে রাখতে পারে না তবে ASCII অক্ষর হিসাবে পৃথকভাবে ব্যাখ্যা করা যায় (উদাহরণস্বরূপ, ' 0' অক্ষরটি দশমিক মান 48, বাইনারি মান দ্বারা প্রতিনিধিত্ব করা হয় 00110000), তারা করতে পারে একসাথে এমন একটি বিন্যাসে যুক্ত হয়ে উঠুন যা আপনার জন্য অর্থবোধ করে, একজন মানব।


প্রোগ্রামিং সম্পর্কিত একটি ধারণা টাইপকাস্টিং , যা কম্পিউটার কীভাবে একটি নির্দিষ্ট 0এস এবং 1এস এর প্রবাহকে ব্যাখ্যা করবে । উপরের উদাহরণ হিসাবে, এটি একটি সংখ্যাসূচক মান, একটি চরিত্র, বা এমনকি সম্পূর্ণরূপে অন্য কিছু হিসাবে ব্যাখ্যা করা যেতে পারে। একটি 32-বিট পূর্ণসংখ্যার 100000000000000 এর মান ধরে রাখতে না পারলে, একটি 32-বিট ভাসমান-পয়েন্ট নম্বর সম্পূর্ণ ভিন্ন ব্যাখ্যার সাহায্যে সক্ষম হতে পারে।

কম্পিউটারগুলি কীভাবে অভ্যন্তরীণভাবে বৃহত সংখ্যার সাথে কাজ করতে এবং প্রক্রিয়া করতে পারে, সেখানে 64৪-বিট ইন্টিজার (যা ১ 16-বিলিয়ন-বিলিয়ন অবধি মূল্য সংযোজন করতে পারে), ভাসমান-পয়েন্টের মানগুলি, পাশাপাশি বিশেষায়িত গ্রন্থাগারগুলি রয়েছে যা নির্বিচারে বৃহত্তর সাথে কাজ করতে পারে নম্বর।


22
আসলে এটি বেশিরভাগ ক্ষেত্রে সঠিক তবে বেশ নয়। একটি 32 পয়েন্টের ফ্লোটিং পয়েন্ট নম্বরটি 100000000000000 টি সঠিকভাবে উপস্থাপন করতে সক্ষম হওয়ার সম্ভাবনা নেই It এটি একটি সংখ্যাটি পছন্দসই সংখ্যার খুব কাছাকাছি প্রতিনিধিত্ব করবে তবে ঠিক এটি নয়।
টিম বি

6
@ টিমবি: আপনি দশমিক 32 ফর্ম্যাট সম্পর্কে শুনেছেন? এটি আইইইই 754-2008 স্ট্যান্ডার্ডের অংশ। এই ফর্ম্যাটটি এই সংখ্যার সঠিক উপস্থাপন করতে সক্ষম :)
ভিএক্স

15
সত্য, এটা পারে। তবে "ফ্লোট" বলার সময় এটির বিন্যাসটি বোঝায় না, যা বর্তমান কম্পিউটারগুলিতে স্ট্যান্ডার্ড ভাসমান পয়েন্ট প্রসেসরের দ্বারা সংরক্ষণ করা এবং ব্যবহৃত হিসাবে 32 বিবিট ভাসমান পয়েন্ট সংখ্যাটিকে বোঝায়।
টিম বি

2
@ টিমবি সত্যই। ফ্লোট 32 হিসাবে প্রতিনিধিত্ব করা যেতে পারে তার নিকটতম সংখ্যাটি 999999995904
গ্রেগো,

4
@ টিমবি: তবে একটি 64-বিট ভাসমান-পয়েন্ট নম্বর সহজেই 1000000000000ঠিক উপস্থাপন করতে পারে । এটি 10 ​​^ 12, বা 2 ^ 12 * 5 ^ 12; 5 ^ 12 এর জন্য 28 বিট ম্যান্টিসার প্রয়োজন।
কিথ থম্পসন

191

প্রথম এবং সর্বাগ্রে, 32-বিট কম্পিউটারগুলি একক মেশিনের শব্দের মধ্যে 2³²-1 অবধি সংখ্যা সঞ্চয় করতে পারে । মেশিন ওয়ার্ড হ'ল সিপিইউ প্রাকৃতিক উপায়ে প্রক্রিয়া করতে পারে এমন পরিমাণের পরিমাণ (উদাহরণস্বরূপ, সেই আকারের ডেটাগুলির ক্রিয়াকলাপগুলি হার্ডওয়ারে প্রয়োগ করা হয় এবং সাধারণত সম্পাদন করতে দ্রুত হয়)। 32-বিট সিপিইউগুলিতে 32 বিট সমন্বিত শব্দ ব্যবহার করা হয়, সুতরাং তারা 0 থেকে 2³²-1 পর্যন্ত একটি শব্দে সংখ্যা সঞ্চয় করতে পারে ।

দ্বিতীয়ত, 1 ট্রিলিয়ন এবং 1000000000000 দুটি আলাদা জিনিস।

  • 1 ট্রিলিয়ন সংখ্যার বিমূর্ত ধারণা
  • 1000000000000 হ'ল পাঠ্য

1একবার এবং 012 বার টিপে আপনি পাঠ্য টাইপ করছেন। 1ইনপুটস 1, 0ইনপুটস 0। দেখা? আপনি অক্ষর টাইপ করছেন। অক্ষর সংখ্যা নয়। টাইপরাইটারদের কোনও সিপিইউ বা মেমরি ছিল না এবং তারা এ জাতীয় "সংখ্যা" বেশ ভালভাবে পরিচালনা করছেন, কারণ এটি কেবল পাঠ্য।

প্রমাণ যে 100000000000000 একটি সংখ্যা নয়, তবে পাঠ্য: এর অর্থ 1 ট্রিলিয়ন (দশমিক হিসাবে), 4096 (বাইনারিতে) বা 281474976710656 (হেক্সাডেসিমালে) হতে পারে। বিভিন্ন সিস্টেমে এর আরও অর্থ রয়েছে। 1000000000000 এর অর্থ একটি সংখ্যা এবং এটি সংরক্ষণ করা আলাদা গল্প (আমরা এক মুহুর্তে এটিতে ফিরে আসব)।

পাঠ্যটি সংরক্ষণ করার জন্য (প্রোগ্রামিংয়ে একে স্ট্রিং বলা হয় ) 1000000000000 আপনার 14 বাইট প্রয়োজন (প্রতিটি চরিত্রের জন্য একটি একটি সমাপ্ত নাল বাইট যার মূলত "স্ট্রিংটি এখানেই শেষ হয়")। এটি 4 মেশিন শব্দ। 3 এবং অর্ধেক যথেষ্ট হবে, তবে আমি যেমন বলেছি, মেশিন শব্দের উপর ক্রিয়াকলাপ দ্রুততম। আসুন ধরে নেওয়া যাক ASCII পাঠ্য সঞ্চয়ের জন্য ব্যবহৃত হয়েছে, সুতরাং মেমরির ক্ষেত্রে এটি দেখতে এইরকম হবে: (ASCII কোডগুলিকে 0এবং 1বাইনারি অনুসারে, প্রতিটি শব্দের আলাদা লাইনে রূপান্তর করা )

00110001 00110000 00110000 00110000
00110000 00110000 00110000 00110000
00110000 00110000 00110000 00110000
00110000 00000000 00000000 00000000

চারটি অক্ষর একটি শব্দের সাথে খাপ খায়, বাকিটি পরের একটিতে সরানো হয়। সমস্ত কিছু (প্রথম এনইউএলএল বাইট সহ) ফিট না হওয়া অবধি বাকি শব্দগুলিতে স্থানান্তরিত হয়।

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

  • আমাদের কাল্পনিক কম্পিউটার বাইনারি পরিবর্তে দশমিক ব্যবহার করে
  • একটি বাইট সংখ্যা ধরে রাখতে পারে 0..9
  • একটি শব্দ দুটি বাইট নিয়ে গঠিত

এখানে একটি খালি 2-শব্দের স্মৃতি রয়েছে:

0 0
0 0

আসুন 4 নম্বর সংরক্ষণ করুন:

0 4
0 0

এখন 9 যোগ করুন:

1 3
0 0

লক্ষ্য করুন যে উভয় অপারেন্ডগুলি একটি বাইটে ফিট করবে তবে ফলাফলটি নয়। তবে আমাদের ব্যবহারের জন্য আরও একটি প্রস্তুত রয়েছে। এখন আসুন 99:

9 9
0 0

আবার, আমরা নম্বরটি সঞ্চয় করতে দ্বিতীয় বাইট ব্যবহার করেছি। আসুন 1 যোগ করুন:

0 0
0 0

ওহো ... একে একে পূর্ণসংখ্যার ওভারফ্লো বলা হয় এবং এটি অনেকগুলি গুরুতর সমস্যার কারণ, কখনও কখনও খুব ব্যয়বহুল

তবে যদি আমরা আশা করি যে ওভারফ্লো হবে, তবে আমরা এটি করতে পারি:

0 0
9 9

এবং এখন যোগ করুন 1:

0 1
0 0

আপনি যদি বাই-বিভাজনকারী স্পেস এবং নিউলাইনগুলি সরিয়ে থাকেন তবে এটি স্পষ্ট হয়ে ওঠে:

0099    | +1
0100

আমরা পূর্বাভাস দিয়েছি যে ওভারফ্লো হতে পারে এবং আমাদের অতিরিক্ত মেমরির প্রয়োজন হতে পারে। সংখ্যাগুলি এইভাবে হ্যান্ডলিং করা সংখ্যার সাথে তত দ্রুত নয় যা একক শব্দের সাথে খাপ খায় এবং এটি সফ্টওয়্যারে প্রয়োগ করতে হয়। 32-বিট সিপিইউ-তে 2-32-বিট-শব্দ-সংখ্যার জন্য সমর্থন যুক্ত করা কার্যকরভাবে এটি একটি 64-বিট সিপিইউ করে তোলে (এখন এটি স্থানীয়ভাবে 64-বিট সংখ্যায় কাজ করতে পারে, তাই না?)

আমি উপরে বর্ণিত সমস্ত কিছু 8-বিট বাইট এবং 4-বাইট শব্দের সাথে বাইনারি মেমোরিতে প্রযোজ্য, এটি একইভাবে বেশ কার্যকরভাবে কাজ করে:

00000000 00000000 00000000 00000000 11111111 11111111 11111111 11111111    | +1
00000000 00000000 00000000 00000001 00000000 00000000 00000000 00000000

যদিও এই জাতীয় সংখ্যাকে দশমিক সিস্টেমে রূপান্তর করা জটিল। (তবে এটি হেক্সাডেসিমালের সাথে বেশ ভাল কাজ করে )


21
আপনার উত্তর বরং ঘনিষ্ঠভাবে পড়ছে। ওপি পরিষ্কারভাবে নম্বর, না টেক্সট বিষয়ে কথা হয়: large as the number 1 trillion (1000000000000)। এছাড়াও, আপনি প্রায় নির্বিচারে-নির্ভুলতা পাটিগণিত সম্পর্কে কথা বলছেন , তবে আপনি যা বলছেন তার জন্য আপনি কোনও শর্তের কথা সত্যিই উল্লেখ করেননি ....
মিররফেটে

12
"1 ট্রিলিয়ন" এটিও একটি স্ট্রিং
এলজো ভালুগি 8'14

3
@ এলজোভালুগি এটি। সংখ্যার প্রতিনিধিত্বকারী স্ট্রিংয়ের বিপরীতে আমাকে বিমূর্ত সংখ্যার ধারণা উপস্থাপনের জন্য কিছু উপায় খুঁজে বের করতে হয়েছিল। আমি বিশ্বাস করি "1 ট্রিলিয়ন" এটি করার একটি আরও ভাল এবং কম দ্ব্যর্থক উপায় (উত্তরের প্রমাণটি দেখুন)।
gronostaj

25
@ মিররফেটে আমি 'সংখ্যার বিষয়ে স্পষ্টভাবে কথা বলছি' এর সাথে একমত নই। ওপি যা স্পষ্টভাবে 'জরিমানা প্রদর্শিত', বলছেন হয় আমাকে টেক্সট '1000000000000' সম্পর্কে কথা বলা ...
জো

4
@ অন্নবনে 'এ' একটি চরিত্র, সংখ্যা নয়। '?' একটি চরিত্র এবং একটি সংখ্যা নয়। '1' একটি চরিত্র এবং একটি সংখ্যাও নয়। চরিত্রগুলি কেবল প্রতীক। তারা অঙ্ক বা সংখ্যা উপস্থাপন করতে পারে, তবে অবশ্যই তারা সংখ্যা নয়। '1' এক, দশ, একশ, হাজার এবং আরও অনেকের জন্য দাঁড়িয়ে থাকতে পারে, এটি কেবল একটি প্রতীক যা একটি সংখ্যা বা তার অংশ হতে পারে for '10' (চরিত্রের স্ট্রিং) এর অর্থ দুটি বা আট, দশ বা ষোল ইত্যাদি হতে পারে তবে আপনি যখন বলেছিলেন আপনার কাছে দশটি আপেল রয়েছে তখন আপনি দশ নম্বর ব্যবহার করছেন এবং প্রত্যেকে আপনার অর্থ কী তা বোঝে। অক্ষর এবং সংখ্যার মধ্যে বিশাল পার্থক্য রয়েছে।
gronostaj

40

আপনি আপনার কম্পিউটারটি ক্রাশ না করে "এই বিবৃতিটি মিথ্যা" লিখতেও সক্ষম হবেন :) @ স্কটের উত্তর নির্দিষ্ট গণনার কাঠামোর জন্য স্পট-অন, তবে আপনার "বৃহত সংখ্যায়" লেখার প্রশ্নটি বোঝায় যে এটি কেবলমাত্র সরল পাঠ্য, অন্তত অবধি এটি ব্যাখ্যা করা হয়।

সম্পাদনা করুন: এখন কম ব্যঙ্গাত্মক আরও বিভিন্ন উপায়ে তথ্য বিভিন্ন উপায়ে একটি সংখ্যা মেমোরিতে সঞ্চয় করা যায়। আমি এগুলি উচ্চতর বিমূর্ততার সাথে বর্ণনা করব অর্থাত যে কোনও আধুনিক প্রোগ্রামার মৃত্যুদন্ড কার্যকর করার জন্য মেশিন কোডে অনুবাদ করার আগে কোড লিখতে পারে।

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

স্বাক্ষরবিহীন পূর্ণসংখ্যার সাথে শুরু করা যাক । এই মান ধরণের ক্ষেত্রে, সমস্ত বিটগুলি অঙ্কগুলি সম্পর্কিত তথ্য সঞ্চয় করতে ব্যবহৃত হয়; পুলিশের একটি একটি উদাহরণ 32 বিট স্বাক্ষরবিহীন পূর্ণসংখ্যা কোথা থেকে কোনো মান 0থেকে 2^32-1সংরক্ষণ করা যেতে পারে। এবং হ্যাঁ, ব্যবহৃত প্ল্যাটফর্মের ভাষা বা আর্কিটেকচারের উপর নির্ভর করে আপনার 16-বিট পূর্ণসংখ্যা বা 256-বিট পূর্ণসংখ্যার থাকতে পারে।

আপনি যদি নেতিবাচক পেতে চান? স্বজ্ঞাতভাবে, স্বাক্ষরিত পূর্ণসংখ্যাগুলি গেমের নাম। কনভেনশনটি হ'ল সমস্ত মান থেকে বরাদ্দ -2^(n-1)করা 2^(n-1)-1- এইভাবে আমরা দুটি উপায় লেখার +0এবং মোকাবেলা করার বিভ্রান্তি এড়াতে পারি -0। সুতরাং একটি 32 বিট স্বাক্ষর পূর্ণসংখ্যা থেকে একটি মান রাখা হবে -2147483648থেকে 2147483647। ঝরঝরে, তাই না?

ঠিক আছে, আমরা পূর্ণসংখ্যাগুলি coveredেকে রেখেছি যা দশমিক উপাদান ছাড়াই সংখ্যা। এগুলি প্রকাশ করা তাত্ক্ষণিক: অ-পূর্ণসংখ্যার অংশটি সম্ভবত বোধগম্যভাবে কোথাও কোথাও হতে পারে 0এবং 1সুতরাং, এটি বর্ণনা করতে ব্যবহৃত প্রতিটি অতিরিক্ত বিট তার নির্ভুলতা বাড়িয়ে তুলবে: 1/2, 1/4, 1/8 ... সমস্যাটি হ'ল আপনি 0.1ভগ্নাংশের যোগফল হিসাবে একটি সাধারণ দশমিকটি অবিকল প্রকাশ করতে পারে না যা তাদের ডিনোমিনেটরে কেবল দু'জনেরই ক্ষমতা থাকতে পারে! সংখ্যাটি পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা কি আরও সহজ হবে না, তবে পরিবর্তে মূলত (দশমিক) পয়েন্টটি রাখতে রাজি হন? এটিকে স্থির বিন্দু সংখ্যা বলা হয় , যেখানে আমরা সংরক্ষণ করি 1234100তবে 1234.100পরিবর্তে এটি পড়ার জন্য একটি সম্মেলনে সম্মতি জানাই।

গণনার জন্য ব্যবহৃত একটি তুলনামূলকভাবে বেশি সাধারণ ধরণ floating point। এটি যেভাবে কাজ করে তা সত্যই ঝরঝরে, এটি সাইন মানটি সংরক্ষণ করতে কিছুটা ব্যবহার করে, আবার কোনওটি এক্সপোনেন্ট এবং তাৎপর্য সংরক্ষণ করে। এমন মানদণ্ড রয়েছে যা এই জাতীয় বরাদ্দকে সংজ্ঞায়িত করে, তবে 32-বিট ভাসমান সর্বাধিক সংখ্যার জন্য আপনি সংরক্ষণ করতে সক্ষম হবেন একটি অপ্রতিরোধ্য

(2 - 2^-23) * 2^(2^7 - 1) ≈ 3.4 * 10^38

এটি অবশ্য নির্ভুলতার ব্যয়েই আসে। ব্রাউজারগুলিতে উপলব্ধ জাভাস্ক্রিপ্ট 64৪-বিট ফ্লোট ব্যবহার করে এবং এটি এখনও জিনিসগুলি সঠিকভাবে পেতে পারে না। এটিকে ঠিক ঠিকানা বারে অনুলিপি করুন এবং এন্টার টিপুন। ভক্ষক সতর্কতা: ফলাফলের হয় না হতে যাচ্ছে 0.3

javascript:alert(0.1+0.2);

মাইক্রোসফ্ট। নেট 4.5 এর মতো আরও বিকল্প ধরণের রয়েছে BigInteger, যা তাত্ত্বিকভাবে কোনও উচ্চ বা নিম্ন সীমানা নেই এবং "ব্যাচ" এ গণনা করতে হয়; তবে সম্ভবত আরও আকর্ষণীয় প্রযুক্তিগুলি হ'ল ওল্ফ্রাম ম্যাথেমেটিকা ​​ইঞ্জিনের মতো গণিত বোঝে যা অনন্তের মতো বিমূর্ত মূল্যগুলির সাথে অবিকল কাজ করতে পারে


8
আপনি এই বাস্তবতায় তা করতে পারেন । স্টার ট্রেক মহাবিশ্বে এটি করার চেষ্টা করুন। সমস্ত স্পার্কস এবং ধূমপানের কারণে কেবল সামনে দাঁড়াও।
মাইকেল পেট্রোটা

ঠিক ঠিক পয়েন্ট কাজ করে না যে। এটি আসলে এমন একটি সিস্টেম যেখানে সংখ্যা দশমিক বিন্দু তৈরি করতে পক্ষপাতদুষ্ট হয়। আপনার উদাহরণে স্কেলটি 1/1000, তবে এখানে নির্দিষ্ট পয়েন্ট নম্বর (বিশেষত কম্পিউটার গ্রাফিক্সে) রয়েছে: 0 = 0.0, 255 = 1.0 - স্কেলটি 1/255।
অ্যান্ডন এম। কোলেম্যান

31

কীগুলি কম্পিউটারগুলি নম্বরগুলি এনকোড করে তা বোঝা হচ্ছে ।

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

একটি উদাহরণ হ'ল কম্পিউটারগুলি কীভাবে ভাসমান পয়েন্ট সংখ্যা সংরক্ষণ করে। কম্পিউটারগুলি তাদের এনকোড করার জন্য বিভিন্ন উপায়ে পুরো গোছা ব্যবহার করতে পারে। স্ট্যান্ডার্ড আইইইই 754 2 ^ 32 এর চেয়ে বড় এনকোডিংয়ের জন্য নিয়মগুলি সংজ্ঞায়িত করে। অদ্ভুতভাবে, কম্পিউটারগুলি সংখ্যার কয়েকটি অঙ্ক এবং সংখ্যার আকারের প্রতিনিধিত্বকারী অন্যান্য বিটগুলিকে প্রতিনিধিত্ব করে বিভিন্ন অংশগুলিতে 32 বিট বিভক্ত করে এটি প্রয়োগ করতে পারে (অর্থাত্ প্রকাশকারী, 10 ^ x)। এটি অনেক বড় পরিসরের অনুমতি দেয়আকার শর্তাবলী সংখ্যা, কিন্তু নির্ভুলতা আপস (যা অনেক উদ্দেশ্যে ঠিক আছে)। অবশ্যই কম্পিউটার এই এনকোডিংয়ের জন্য উপলব্ধ এনকোডযুক্ত সংখ্যার परिमाणের নির্ভুলতা বাড়িয়ে একাধিক শব্দ ব্যবহার করতে পারে। আইইইই স্ট্যান্ডার্ডের সরল দশমিক 32 সংস্করণটি প্রায় 7 দশমিক অঙ্কের সংক্ষিপ্ততার সাথে সংখ্যার সাথে প্রায় 10 ^ 96 অবধি দৈর্ঘ্যের মঞ্জুরি দেয়।

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


24

সব আপনার প্রশ্নে।

আপনি কাগজে নিজের পছন্দ মতো যে কোনও নম্বর লিখতে পারেন । কাগজের সাদা শীটে ট্রিলিয়ন ডট লেখার চেষ্টা করুন। এটি ধীর এবং অকার্যকর। এজন্য আমাদের কাছে এই বিশাল সংখ্যার প্রতিনিধিত্ব করার জন্য একটি 10-সংখ্যার সিস্টেম রয়েছে। আমাদের কাছে এমনকি "মিলিয়ন", "ট্রিলিয়ন" এবং আরও অনেকের জন্য বড় সংখ্যার নাম রয়েছে, তাই আপনি one one one one one one one one one one one...জোরে জোরে বলবেন না ।

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

আমরা যখন কাগজে લખি তখন আমরা সংখ্যাগুলিতে অঙ্কগুলিতে বিভক্ত করি। কম্পিউটারগুলি সংখ্যাগুলিকে বিরাট সংখ্যায় বিভক্ত করে। আমরা আমাদের পছন্দ মতো যে কোনও সংখ্যা লিখতে পারি এবং কম্পিউটারগুলি যদি সেগুলি ডিজাইন করে তবে তাও সম্ভব।


15

32 বিট এবং 64 বিট মেমরি ঠিকানাগুলি উল্লেখ করে। আপনার কম্পিউটারের মেমোরিটি পোস্ট অফিস বক্সগুলির মতো, প্রত্যেকটির আলাদা আলাদা ঠিকানা রয়েছে। সিপিইউ (সেন্ট্রাল প্রসেসিং ইউনিট) আপনার র্যামের র্যান্ডম অ্যাক্সেস মেমোরির ঠিকানাগুলির জন্য এই ঠিকানাগুলি ব্যবহার করে। যখন সিপিইউ কেবলমাত্র 16 বিটের ঠিকানাগুলি পরিচালনা করতে পারে, আপনি কেবল 32 এমবি র‌্যাম ব্যবহার করতে পারেন (যা সেই সময়টিতে বিশাল মনে হয়েছিল)। 32 বিটের সাহায্যে এটি 4 + গিগাবাইটে চলে গেছে (যা তখনকার সময়ে বিশাল মনে হয়েছিল)। এখন যেহেতু আমাদের bit৪ বিট ঠিকানা রয়েছে র‌্যাম টেরাবাইটে চলে যায় (যা বিশাল মনে হয়)।
তবে প্রোগ্রামটি সংখ্যা এবং পাঠ্য সংরক্ষণের মতো জিনিসের জন্য মেমরির একাধিক ব্লক বরাদ্দ করতে সক্ষম, যা প্রোগ্রামের উপর নির্ভর করে এবং প্রতিটি ঠিকানার আকারের সাথে সম্পর্কিত নয়। সুতরাং একটি প্রোগ্রাম সিপিইউকে বলতে পারে, আমি স্টোরেজের 10 অ্যাড্রেস ব্লক ব্যবহার করতে যাচ্ছি এবং তারপরে একটি খুব বড় সংখ্যক, বা একটি 10 ​​অক্ষরের স্ট্রিং বা যা কিছু সংরক্ষণ করব।
পার্শ্ব নোট: মেমরি ঠিকানাগুলি "পয়েন্টার" দ্বারা নির্দেশিত হয়, তাই 32- এবং 64-বিট মান মানে মেমরিটি অ্যাক্সেস করতে ব্যবহৃত পয়েন্টারের আকার।


2
বিশদ বিবরণ ব্যতীত ভাল উত্তর - 16 স্পেসের স্প্রেসের স্থান আপনাকে 32 এমবি নয়, 64kb দিয়েছে এবং 286 এর মতো মেশিনগুলিতে 24-বিট ঠিকানা ছিল (16 এমবি জন্য)। এছাড়াও, -৪-বিট অ্যাড্রেস সহ, আপনি টেরাবাইটের বাইরে চলে যেতে পারেন - আরও ১ 16 এক্সাবাইটের মতো - টেরাবাইট বর্তমান প্রজন্মের মাদারবোর্ডগুলি / সিপিইউগুলি চাপানোর মতো সীমাবদ্ধতার কাছাকাছি - ঠিকানাগুলির আকার নয়।
ফিল

4
32-বিট মেশিনের শব্দের আকার নয় মেমরির ঠিকানাগুলি বোঝায়। ফিল যেমন উল্লেখ করেছে, ২৮ 16 টি 16 বিট সিপিইউ ছিল তবে মেমরি বিভাজনের মাধ্যমে সম্বোধনের জন্য 24 বিট ব্যবহার করেছিল। x86 সিপিইউগুলি 32-বিট, তবে 36-বিট ঠিকানা ব্যবহার করুন use পিএই দেখুন ।
gronostaj

@ গ্রনোস্টাজ ওয়েল x86- এ 386 থেকে পেন্টিয়ামে 32-বিট ঠিকানা রয়েছে।
রুসলান

আপভোট করুন কারণ এখানে একমাত্র সঠিক উত্তর - 32 বাইট 32 বিট মেমরি অ্যাড্রেসিংকে বোঝায়, 32 বিট পাটিগণিত নয়।
ব্যবহারকারী1207217

@ ব্যবহারকারী1207217: ?? সুতরাং আপনার যুক্তি অনুসারে উদাহরণস্বরূপ Z80 বা 8080 16 বিট প্রসেসর (16 বিট মেমরি ঠিকানা এবং মেমরি বাসের কারণে)?
পাবুক

13

কারণ সংখ্যাটি প্রদর্শন করা পৃথক অক্ষর ব্যবহার করে সম্পন্ন হয়, পূর্ণসংখ্যা নয়। সংখ্যার প্রতিটি অঙ্ক পৃথক অক্ষর অক্ষরে অক্ষরে উপস্থাপিত হয়, যার পূর্ণসংখ্যার মান ব্যবহৃত হচ্ছে এনকোডিং দ্বারা সংজ্ঞায়িত করা হয়, উদাহরণস্বরূপ 'a'ascii মান দ্বারা প্রতিনিধিত্ব করা হয় 97, যখন '1'সাথে প্রদর্শিত হয় 49এখানে ascii টেবিল চেক করুন
'ক' এবং '১' উভয়ই প্রদর্শনের জন্য একই। এগুলি চরিত্রের আক্ষরিক, পূর্ণসংখ্যা নয়। প্রতিটি চরিত্রের আক্ষরিক জন্য 32-বিট প্ল্যাটফর্মে 255 এর মান 8 বিট বা 1 বাইট আকারে সংরক্ষণের (এটি প্ল্যাটফর্ম নির্ভর, তবে 8 বিট সর্বাধিক সাধারণ চরিত্রের আকার) মঞ্জুরিপ্রাপ্ত, সুতরাং এগুলি একসাথে গ্রুপ করা যায় এবং হতে পারে প্রদর্শিত। তারা কতটা পৃথক অক্ষর প্রদর্শন করতে পারে তা আপনার র‌্যামের উপর নির্ভর করে। আপনার যদি র‌্যামের মাত্র 1 বাইট থাকে তবে আপনি কেবল একটি অক্ষর প্রদর্শন করতে পারেন, আপনার 1 গিগাবাইট র‌্যাম থাকলে আপনি 1024 * 1024 * 1024 অক্ষর (গণিত করতে খুব অলস) প্রদর্শন করতে পারেন।

এই সীমাবদ্ধতাটি গণনার ক্ষেত্রে প্রযোজ্য, তবে আমি অনুমান করি আপনি আইপিভি 4 স্ট্যান্ডার্ড সম্পর্কে আগ্রহী। যদিও এটি সম্পূর্ণ কম্পিউটারের সাথে সম্পর্কিত নয় relatedbit-size, এটি কোনওভাবে মানকে প্রভাবিত করেছে। আইপিভি 4 স্ট্যান্ডার্ড তৈরি হয়ে গেলে তারা আইপি মানগুলি 32-বিট পূর্ণসংখ্যায় সঞ্চয় করে stored এখন একবার আপনি আকার দিয়েছেন, এবং এটি স্ট্যান্ডার্ড হয়ে গেছে। আমরা ইন্টারনেট সম্পর্কে যা জানি তা তার উপর নির্ভরশীল ছিল এবং তারপরে আমরা নির্ধারিত আইপি ঠিকানাগুলি ছড়িয়ে দিয়েছিলাম। সুতরাং যদি আইপি স্ট্যান্ডার্ডটি bit৪ বিট হিসাবে সংশোধন করা হয়, আপনার রাউটার (আমি এটি সঠিক বলে ধরে নিই) এবং অন্যান্য নেটওয়ার্কিং ডিভাইসগুলি সহ সবকিছুই কেবল কাজ করা বন্ধ করবে। সুতরাং একটি নতুন স্ট্যান্ডার্ড তৈরি করতে হবে, যা কেবলমাত্র 128 বিট একের সাথে 32 বিট পূর্ণসংখ্যাকে সরিয়ে নিয়েছে। এবং মান মানিয়ে বাকি। হার্ডওয়্যার নির্মাতাকে কেবল ঘোষণা করতে হবে যে তারা এই নতুন মানটিকে সমর্থন করে এবং এটি ভাইরাল হয়ে উঠবে। যদিও এটি এতটা সহজ নয় তবে আমার ধারণা আপনি এখানে পয়েন্টটি পেয়েছেন।

দাবি অস্বীকার: এখানে উল্লিখিত বেশিরভাগ পয়েন্টগুলি আমার অনুমানের সাথে সত্য। এটিকে সহজ করার জন্য আমি এখানে গুরুত্বপূর্ণ পয়েন্টগুলি মিস করেছি। আমি সংখ্যার সাথে ভাল নই, তাই অবশ্যই কিছু অঙ্ক মিস করে দিয়েছি, তবে আমার বক্তব্যটি কেন পিসি ক্রাশ হবে না সে সম্পর্কে ওপি-র জবাব দেওয়া।


2
আমি উঁচু হই নি, তবে আপনার উত্তর নিয়ে বেশ কিছু সমস্যা আছে। 1ASCII এ 0x31, 0x1 নয়। 1 জিবি = 1024 ^ 3 বি। আইভিভি 4 ওয়াড 32-বিট সিপিইউগুলি প্রবর্তনের আগে আবিষ্কার করেছিল, সুতরাং ঠিকানাগুলি 32-বিট ইন্টিজারে সংরক্ষণ করা হয়েছে বলে ওপির প্রশ্নের বিরোধী। এবং পরিশেষে IPv6 128-বিট ঠিকানা ব্যবহার করছে, 64-বিট নয়।
gronostaj

13

প্রসেসরগুলিতে, "শব্দ" রয়েছে। বিভিন্ন শব্দ আছে। লোকেরা যখন "32 বিট প্রসেসর" বলে, তখন তাদের বেশিরভাগটির অর্থ "মেমরি বাসের প্রস্থ"। এই শব্দটি বিভিন্ন "ক্ষেত্র" নিয়ে গঠিত যা কম্পিউটারের সাবসিস্টেমগুলি প্রেরণ (24 বিট) এবং নিয়ন্ত্রণ (অন্যান্য বিট) এর সাথে সম্পর্কিত। আমি সঠিক সংখ্যা সম্পর্কে ভুল হতে পারি, ম্যানুয়ালগুলির মাধ্যমে নিজেকে এ সম্পর্কে নিশ্চিত করুন।

সম্পূর্ণ ভিন্ন দিকটি হল গণনা। এসএসই এবং এমএমএক্স নির্দেশাবলী দীর্ঘ পূর্ণসংখ্যা সঞ্চয় করতে পারে। উত্পাদনশীলতা ক্ষতি ছাড়াই সর্বাধিক দৈর্ঘ্য বর্তমান এসএসই সংস্করণের উপর নির্ভর করে তবে সর্বদা এটি 64 বিটের একাধিক সম্পর্কে।

বর্তমান ওপ্টরন প্রসেসরগুলি 256 বিট প্রশস্ত সংখ্যাগুলি পরিচালনা করতে পারে (আমি পূর্ণসংখ্যার বিষয়ে নিশ্চিত নই, তবে অবশ্যই ভাসমানটি নিশ্চিত)।

সংক্ষিপ্তসার : (1) বাসের প্রস্থ সরাসরি গণনা প্রস্থের সাথে সংযুক্ত নয়, (২) এমনকি বিভিন্ন শব্দ (মেমরি শব্দ, নিবন্ধের শব্দ, বাস শব্দ ইত্যাদি) একে অপরের সাথে সংযুক্ত থাকে না, অন্যথায় তাদের প্রায় 8 বা 16 বা সাধারণ বিভাজক থাকে 24. অনেক প্রসেসর এমনকি 6 বিট শব্দ ব্যবহার করেছেন (তবে এটির ইতিহাস)।


সত্য নয়, মূল পেন্টিয়াম প্রসেসরের একটি উচ্চ-মেমরি ব্যান্ডউইথের জন্য একটি 64-বিট ডেটা বাস ছিল, যদিও এটি 32-বিট প্রসেসর ছিল। 8088 একটি 16-বিট প্রসেসর ছিল একটি 8-বিট ডেটা বাসের সাথে।
doug65536

10

একটি কম্পিউটিং ডিভাইসের উদ্দেশ্য, সাধারণত, ডেটা গ্রহণ, প্রক্রিয়া করা, সঞ্চয় করা এবং নির্গমন করা। অন্তর্নিহিত হার্ডওয়্যার কেবল একটি মেশিন যা এই চারটি কার্য সম্পাদন করতে সহায়তা করে। এটি সফ্টওয়্যার ছাড়া তাদের কোনওটিই করতে পারে না।

সফ্টওয়্যার হ'ল কোড যা মেশিনকে ডেটা গ্রহণ করতে হয়, কীভাবে এটি প্রক্রিয়াকরণ করতে হয়, কীভাবে এটি সংরক্ষণ করতে হয় এবং কীভাবে এটি অন্যকে সরবরাহ করে তা বলে দেয়।

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

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

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


10

পার্থক্যটি কীভাবে আমরা কম্পিউটারে ডেটা সঞ্চয় করি তার মধ্যে।

আপনি সঠিক যে একটি তাত্ত্বিক 8-বিট মেশিনের জন্য, আমরা কেবলমাত্র একটি একক প্রসেসরের রেজিস্টার বা মেমরি ঠিকানায় 2 ^ 8 মান সংরক্ষণ করতে সক্ষম। (দয়া করে মনে রাখবেন এটি ব্যবহৃত "মেশিন" থেকে প্রসেসর ব্যবহৃত মেমরি আর্কিটেকচার ইত্যাদির উপর ভিত্তি করে "মেশিন" থেকে পরিবর্তিত হয় তবে আপাতত, অনুমানক 'স্টেরিওটাইপ' মেশিনের সাথে লেগে থাকি।)

একটি তাত্ত্বিক 16-বিট মেশিনের জন্য, একটি রেজিস্টার / মেমরির অবস্থানের সর্বাধিক মান 2 ^ 16 হবে, 32-বিট মেশিনের জন্য, 2 ^ 32 ইত্যাদি etc.

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

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

সুতরাং প্রচুর সংখ্যক "নেটিভালি" হ্যান্ডেল করার জন্য রেজিস্টার, মেমরি অবস্থান এবং মেমরি ঠিকানাগুলির হার্ডওয়্যারকে "বৃহত্তর" এবং বৃহত্তর করার সাধারণ আকাঙ্ক্ষা যাতে এই জাতীয় সংখ্যাটি সর্বনিম্ন সংখ্যার ক্রিয়াকলাপের সাথে পরিচালনা করা যায়।

যেহেতু সংখ্যার আকার অসীম, প্রসেসরের রেজিস্টার / মেমরির আকার / ঠিকানা ঠিকানা সর্বদা দেশীয় সংখ্যা আকার এবং বৃহত্তর এবং বৃহত্তর প্রস্থকে বাস্তবায়নে জড়িত ব্যয়ের একটি ভারসাম্য।


8

32 বিট কম্পিউটারগুলি কেবল একটি মেশিনের শব্দের মধ্যে 2 ^ 32 পর্যন্ত সংখ্যা সঞ্চয় করতে পারে তবে এর অর্থ এই নয় যে তারা বৃহত্তর ডেটা হ্যান্ডেল করতে পারে না।

৩২ বিট কম্পিউটারের অর্থ সাধারণত: ডেটা বাস এবং অ্যাড্রেস বাসটি 32 বিট প্রস্থের, যার অর্থ কম্পিউটার একবারে 4 গিগাবাইট মেমরি ঠিকানার স্থান পরিচালনা করতে পারে এবং ডেটা বাসের মাধ্যমে একবারে চার বাইট ডেটা প্রেরণ করতে পারে ।

এটি তবে কম্পিউটারকে আরও ডেটা পরিচালনা করতে সীমাবদ্ধ করে না, ডাটা বাসের মাধ্যমে প্রেরণ করার সময় কেবল চারটি বাইট খণ্ডে ডেটা বিভক্ত করতে হবে।

নিয়মিত ইন্টেল 32-বিট প্রসেসর 128-বিট সংখ্যা অভ্যন্তরীণভাবে পরিচালনা করতে পারে যা আপনাকে কোনও সমস্যা ছাড়াই 1000000000000000000000000000000000000 এর মতো সংখ্যাগুলি হ্যান্ডেল করতে দেয়।

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


6

অন্যান্য অনেক উত্তরে কেবল একটি নোট যুক্ত করুন, কারণ এই প্রশ্নের এই একটি দুর্দান্ত গুরুত্বপূর্ণ ঘটনা যা মিস করা হয়েছে।

"32 বিট" মেমরি ঠিকানার প্রস্থকে বোঝায়। এটি নিবন্ধের আকারের সাথে কোনও সম্পর্ক রাখে না। অনেকগুলি 32 বিট সিপিইউতে সম্ভবত 64 বা 128 বিট রেজিস্টার রয়েছে। বিশেষত x86 প্রোডাক্ট লাইনের কথা উল্লেখ করে, সাম্প্রতিক গ্রাহক সিপিইউগুলি, যা সমস্ত 64 বিট, বিশেষ উদ্দেশ্যে 256 বিট রেজিস্ট্রার ধারণ করে।

প্রাচীন কাল থেকেই নিবন্ধের প্রস্থ এবং ঠিকানার প্রস্থের মধ্যে এই পার্থক্য বিদ্যমান ছিল, যখন আমাদের কাছে 4 বিট রেজিস্টার এবং 8 বিট ঠিকানা, বা বিপরীতে ছিল।

এটি দেখতে সহজ যে অন্যান্য উত্তরগুলিতে বর্ণিত হিসাবে নিবন্ধের আকার নির্বিশেষে একটি বৃহত সংখ্যক সঞ্চয় করা কোনও সমস্যা নয়।

কারণ রেজিস্টার যাই হোক না কেন আকারের তারা হতে, অতিরিক্ত এছাড়াও করতে ঘটতে পারে নিরূপণ করতে, বৃহত্তর সংখ্যার যে অত্যন্ত বড় গণনার একাধিক ছোট যে রেজিস্টার মধ্যে মাপসই করা না (এটা শুধু একটি ক্ষুদ্র বিট আরো জটিল বিভক্ত করা যেতে পারে বাস্তবে).


এটা আসলে সত্য নয়; bit৪ বিট যা বোঝায় তা বেমানান, তবে register৪ বিটের রেজিস্টার প্রস্থ সহ সিস্টেমগুলিকে প্রায়শই bit৪ বিট বলা হয়। উইকিপিডিয়া বলেছে যে "64৪-বিট কম্পিউটার আর্কিটেকচারে সাধারণত inte৪ বিট প্রস্থের পূর্ণসংখ্যা এবং ঠিকানা নিবন্ধ থাকে" has হ্যাঁ, আধুনিক x86 (বা এএমডি-64৪) পণ্য লাইনে বিশাল বিশেষ উদ্দেশ্যে রেজিস্টার রয়েছে তবে তাদের 64৪ বিট প্রধান রেজিস্টার রয়েছে এবং ৪৮-৫২ বিট মেমরি অ্যাক্সেস করতে পারে; পুরানো x86 সিস্টেমে 32 বিট প্রধান রেজিস্টার রয়েছে এবং 24-36 বিট মেমরি অ্যাক্সেস করে এবং 8086 কে একটি 16-বিট চিপ বলা হত, 16-বিট প্রশস্ত রেজিস্টার ছিল এবং 20 বিট মেমরি অ্যাক্সেস করেছিল।
পেশাদাররা

@ প্রসফিলিজ এটি প্রচুর মূল্যবান তথ্য, আমি সেগুলি উল্লেখ করছিলাম (আমি আপনার বিবরণগুলি স্মরণ করতে ব্যর্থ হয়েছি)। উত্তরে নির্দ্বিধায় এটিকে সম্পাদনা করুন।
মাফু

6

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

সুতরাং, কেবলমাত্র এমন কিছু স্পষ্ট করার জন্য যা ইঙ্গিতযুক্ত তবে অন্য উত্তরের কোনওটিতে স্পষ্টভাবে প্রকাশ করা হয়নি এবং যা আমি মনে করি এটি বিষয়টির কর্কট:

আপনি আপনার প্রশ্নে কয়েকটি ধারণা মিশ্রন করছেন এবং সেগুলির একটি ("32 বিট") আসলে বিভিন্ন ধরণের বিভিন্ন জিনিসকে বোঝাতে পারে (এবং বিভিন্ন উত্তর বিভিন্ন ব্যাখ্যা ব্যাখ্যা করেছে)। এই সমস্ত ধারণাগুলির বিউটের সংখ্যার সাথে (1 এবং 0 এর) কিছু সংযুক্তি রয়েছে যা বিভিন্ন কম্পিউটিং প্রসঙ্গে ব্যবহার করা হয়েছে (বা উপলভ্য) এর দ্বারা আমি কী বোঝাতে চাইছি নীচের উদাহরণগুলি দ্বারা আশাবাদী স্পষ্ট করা হবে) তবে ধারণাটি অন্যথায় সম্পর্কিত নয়

নির্দিষ্ট ভাবে:

  • "আইপিভি 4/6" ইন্টারনেট প্রোটোকলকে বোঝায়, ইন্টারনেটে তথ্য কীভাবে প্যাকেজ করা ও ব্যাখ্যা করা যায় তা নির্ধারণ করার নিয়মের একটি সেট। আইপিভি 4 এবং আইপিভি 6 এর মধ্যে প্রাথমিক (বা কমপক্ষে সর্বাধিক সুপরিচিত) পার্থক্যটি হ'ল ঠিকানা স্থান (যেমন ঠিকানাগুলির সেট যা নেটওয়ার্কের বিভিন্ন অবস্থানের মধ্যে পার্থক্য করতে ব্যবহৃত হতে পারে) IPv6-তে বড়। নেটওয়ার্ক জুড়ে প্রেরণ করা প্রতিটি প্যাকেটের কতগুলি বিট প্যাকেটের প্রেরক এবং উদ্দেশ্যপ্রাপ্ত প্রাপক সনাক্তকরণের জন্য (অর্থাত্ পৃথক পৃথক পৃথক সেট) বরাদ্দ রয়েছে তার সাথে এটি করতে হবে ।
    • নন-কম্পিউটিং উপমা: প্রতিটি প্যাকেট শামুক-মেইলের মাধ্যমে প্রেরিত চিঠির মতো হয় এবং খামের ঠিকানায় ঠিকানা এবং ফেরত-ঠিকানা লেখার সময় আপনি যে পরিমাণ অক্ষর ব্যবহার করতে "অনুমোদিত" হন সেটির মতো ঠিকানা স্থান।
    • আমি এখনও পর্যন্ত অন্য কোনও উত্তরে এটি উল্লিখিত দেখতে পাই না।
  • কম্পিউটার-মেমোরি "শব্দ" (32-বিট এবং -৪-বিট) সাধারণত কম্পিউটার ব্যবহার করা ডেটার ক্ষুদ্রতম অংশ হিসাবে বিবেচনা করা যেতে পারে, বা "চিন্তা" করে থাকে data এই বিটের ডেটা বিটগুলি একত্রিত হয়ে ডেটার অন্যান্য বিট তৈরি করে যেমন পাঠ্যের অংশ বা বৃহত্তর পূর্ণসংখ্যার।
    • অ-গণনা উপমা: শব্দগুলিকে কাগজে শব্দ বানানো অক্ষরের মতো, এমনকি চিন্তার ট্রেনে স্বতন্ত্র শব্দ হিসাবেও ভাবা যেতে পারে।
    • দেখুন Guffa এর উত্তর , sanaris এর উত্তর , এবং প্রথম অনুচ্ছেদ gronostaj এর উত্তর
  • ৩২-বিট পয়েন্টারগুলি শব্দ হতে পারে বা নাও হতে পারে তবে তবুও এটিকে তাত্ক্ষণিকভাবে চিকিত্সা করা হয় (অর্থাত স্বতন্ত্র একক হিসাবে ছোট ছোট ভাগে ভাগ করা যায় না)। পয়েন্টারগুলি হ'ল সর্বনিম্ন স্তরের উপায় যেখানে কোনও কম্পিউটার কিছু স্বেচ্ছাসেবী তথ্যের স্মৃতিতে অবস্থান রেকর্ড করতে পারে। নোট করুন যে কম্পিউটার দ্বারা ব্যবহৃত পয়েন্টার আকার (বা, প্রকৃতপক্ষে, অপারেটিং সিস্টেম দ্বারা) মেমরির সীমাটি সীমাবদ্ধ করে যা একক পয়েন্টার দ্বারা অ্যাক্সেস করা যায়, যেহেতু কেবলমাত্র অনেকগুলি সম্ভব মেমরি অবস্থান রয়েছে যা পয়েন্টারটি "পয়েন্ট" করতে পারে পয়েন্টার নিজেই জন্য সম্ভাব্য মান আছে। এটি আইপিভি 4 সম্ভাব্য ইন্টারনেট অ্যাড্রেসের সীমার সীমাবদ্ধ করার উপমা সহ, তবে তা নয়উদাহরণস্বরূপ, একটি নির্দিষ্ট ওয়েব পৃষ্ঠায় উপস্থিত হতে পারে এমন পরিমাণের পরিমাণ সীমিত করুন। যাইহোক, পয়েন্টার আকারটি নিজেই ডেটার আকারকে সীমাবদ্ধ করে না যা পয়েন্টারটি নির্দেশ করতে পারে। (ডেটা আকারকে পয়েন্টার সীমা ছাড়িয়ে যাওয়ার অনুমতি দেওয়ার জন্য একটি প্রকল্পের উদাহরণের জন্য, লিনাক্সের ইনোড পয়েন্টার কাঠামোটি পরীক্ষা করে দেখুন Note লক্ষ্য করুন যে এটি সাধারণত পয়েন্টারটির তুলনায় "পয়েন্টার" শব্দের কিছুটা আলাদা ব্যবহার, যেহেতু পয়েন্টার সাধারণত পয়েন্টারকে নির্দেশ করে এলোমেলো অ্যাক্সেস মেমরি, হার্ড ড্রাইভের জায়গা নয়))
    • নন-কম্পিউটিং উপমা: হুঁ মম .... এটি কিছুটা জটিল। সম্ভবত লাইব্রেরি উপকরণকে সূচকের জন্য ডিউই দশমিক সিস্টেমটি কিছুটা অনুরূপ? বা সত্যিকারের যে কোনও ইনডেক্সিং সিস্টেম।
    • দেখুন SiteNook এর উত্তর
    • দয়া করে নোট করুন যে আমার উপরে পয়েন্টারগুলির ব্যাখ্যা উপরে কিছু সূক্ষ্ম বিবরণ এলিডকে দেয় এবং তর্কযোগ্যভাবে সম্পূর্ণ সঠিক নয়। তবে প্রোগ্রামিং ভাষাগুলিতে যেখানে প্রোগ্রামাররা পয়েন্টারগুলির সাথে সরাসরি কাজ করে, আমি যে মানসিক মোডটি আঁকিয়েছি তা ব্যবহারিক উদ্দেশ্যে সাধারণত যথেষ্ট for
  • সংখ্যার একটি কম্পিউটার "প্রদর্শন করতে পারব" হয় কম্পিউটার এর হার্ডওয়্যার অথবা অপারেটিং সিস্টেম দ্বারা সীমিত (ব্যবহারিক উদ্দেশ্যে) নয়; এগুলি অন্য পাঠ্যের মতো আচরণ করা হয়।

নোট করুন যে এটি "32 বিট" বাক্যাংশের জন্য ব্যাখ্যাগুলির বিশদ তালিকা হতে পারে না।

অতিরিক্ত ক্রেডিট: সত্যিই বেয়ার হাড়, সংখ্যা এবং কম্পিউটার মেমরি আদিম খন্ডে মধ্যে দার্শনিক পার্থক্য দেখতে সম্পর্কে একটু পড়া টুরিং মেশিন


আমি মনে করি আইপিভি 4-এর রেফারেন্সটি উল্লেখ করা হয়েছিল যে আইপিভি 4 অ্যাড্রেসের সংখ্যা কার্যকরভাবে একটি স্বাক্ষরিত 32-বিট পূর্ণসংখ্যার দৈর্ঘ্যের মধ্যে সীমাবদ্ধ, যেখানে আইপিভি 6 128 বিট ব্যবহার করে এবং এর ফলে আরও ঠিকানার আরও অর্ডার থাকতে পারে।
ক্লোনকেক্স

@ ক্লোনকেক্স সম্ভবত, যদিও এটি অবশ্যই প্রশ্নযুক্ত নয়।
কাইল স্ট্র্যান্ড

5

আপনি যদি ক্যালকুলেটরে উদাহরণস্বরূপ 100000000000000 লিখেন, কম্পিউটার এটি দশমিক পয়েন্ট সহ একটি রিয়েল টাইপ নম্বর হিসাবে গণনা করবে । আপনি উল্লেখ করেছেন 32 টি বিটের জন্য সীমা দশমিক বিন্দু ছাড়াই আরও বেশি পূর্ণসংখ্যার ধরণের সংখ্যাগুলিকে স্পর্শ করে । বিট / বাইটে কীভাবে প্রবেশ করতে হয় তা বিভিন্ন ধরণের ডেটা বিভিন্ন পদ্ধতি ব্যবহার করে।

পূর্ণসংখ্যার ধরণের সংখ্যা : এই সারণীটি আপনাকে পয়েন্টটি ধরতে সহায়তা করতে পারে ( http://msdn.microsoft.com/en-us/library/296az74e.aspx )। এটি সি ++ এর সীমাবদ্ধতা স্পর্শ করে। উদাহরণস্বরূপ Int64 টাইপ সংখ্যার -9223372036854775808 থেকে 9223372036854775807 থেকে সীমা রয়েছে।

আসল প্রকারের সংখ্যা : রিয়েল টাইপের সংখ্যায় ভাসমান পয়েন্ট এবং এক্সপোঞ্জ্যান্টের সাথে মান থাকে এবং আপনি অনেক বড় সংখ্যা লিখতে পারেন তবে সীমিত নির্ভুলতা / নির্ভুলতার সাথে। ( http://msdn.microsoft.com/en-us/library/6bs3y5ya.aspx ) উদাহরণস্বরূপ সি ++ এ এলডিবিএল (বড় ডাবল) এর সর্বাধিক এক্সপোশন রয়েছে 308, সম্ভবত আপনি প্রবেশের ফলাফল হিসাবে বা নাম্বার হিসাবে থাকতে পারেন 9.999 x 10^308, এর অর্থ আপনি হবে তাত্ত্বিকভাবে 308 (+1) এর অঙ্ক রয়েছে 9তবে কেবল 15 টি গুরুত্বপূর্ণ সংখ্যা এটি উপস্থাপন করতে ব্যবহার করা হবে, বাকী অংশটি হারিয়ে যাবে, সীমিত নির্ভুলতার কারণ হিসাবে।

অতিরিক্তভাবে, বিভিন্ন প্রোগ্রামিং ভাষা রয়েছে এবং তাদের সংখ্যা সীমাতে বিভিন্ন প্রয়োগ থাকতে পারে। সুতরাং আপনি কল্পনা করতে পারেন যে বিশেষায়িত অ্যাপ্লিকেশনগুলি সি ++ এর চেয়ে অনেক বড় (এবং / বা আরও সঠিক / নির্ভুল) সংখ্যাগুলি পরিচালনা করতে পারে।


এই "উত্তর "টি ভুল: ক্যালকুলেটররা কাটা ত্রুটিগুলি এড়ানোর জন্য বিসিডি নম্বর উপস্থাপনা ব্যবহার করে। IE 0.1 দশমিকটি সীমাবদ্ধ দৈর্ঘ্যের বাইনারি সংখ্যা হিসাবে সঠিকভাবে উপস্থাপন করা যায় না।
22-215

5

আপনি যদি একটি লিনাক্স লিনাক্স সিস্টেমে কয়টি প্রোগ্রাম প্রচুর সংখ্যক প্রক্রিয়াজাতকরণ এবং আউটপুট পরিচালনা করে তার ব্যবহারিক উদাহরণ চান:

libgmp- লিনাক্স সিস্টেমে এই উদ্দেশ্যে জিএনইউ মাল্টিপল প্রিসিশন অ্যারিমেটিক লাইব্রেরি সর্বাধিক ব্যবহৃত হয়। 2 ^ 80 কে 1000 দিয়ে গুণ করার একটি সহজ উদাহরণ:

#include <gmp.h>

// Each large integer uses the mpz_t type provided by libgmp
mpz_t a_large_number;
mpz_t base;
mpz_t result;

// Initalize each variable
mpz_init(a_large_number);
mpz_init(base);
mpz_init(result);

// Assign the number 2 to the variable |base|
mpz_set_ui(base, 2);

// Raise base^80 (2^80), store the result in |a_large_number|
mpz_pow_ui(a_large_number, base, 80);

// Multiply |a_large_number| by 1000, store the result in |result|
mpz_mul_ui(result, a_large_number, 1000);

// Finally, output the result in decimal and hex notation
gmp_printf("decimal: %Zd, hex: %ZX\n", result, result);

সুতরাং মূলত এটি সাধারণ + - * / অপারেটরগুলি ব্যবহার করার মতোই, কেবল একটি লাইব্রেরি দিয়ে সংখ্যাগুলি ভাঙ্গতে এবং একাধিক মেশিন শব্দ আকারের (যেমন 32-বিট) নম্বর হিসাবে অভ্যন্তরীণভাবে সংরক্ষণ করতে। পাঠ্য ইনপুটকে পূর্ণসংখ্যার ধরণে রূপান্তর করার জন্য স্ক্যানফ () টাইপ ফাংশন রয়েছে।

কাঠামোটি mpz_tহ'ল স্কট চেম্বারলাইনের উদাহরণ হিসাবে দুটি হাত ব্যবহার করে 6 গণনা করা। এটি মূলত মেশিন শব্দের আকারের mp_limb_tধরণের ধরণের একটি অ্যারে এবং যখন কোনও সংখ্যা কোনও মেশিন শব্দের সাথে মানানসই হয় তখন জিএমপি mp_limb_tসংখ্যার উচ্চ / নিম্ন অংশগুলি সঞ্চয় করতে একাধিক ব্যবহার করে ।


5

মনে মনে আপনি কেবল 10 টি ভিন্ন অঙ্ক জানেন। 0 থেকে 9. আপনার মস্তিষ্কের অভ্যন্তরীণভাবে, এটি অবশ্যই কম্পিউটারের চেয়ে আলাদাভাবে এনকোড করা হয়েছে।

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

যখনই আমাদের অবশ্যই একটি বৃহত্তর সংখ্যা বুঝতে হবে, আমরা একটি সিস্টেম ব্যবহার করি। বামতম সংখ্যাটি সবচেয়ে গুরুত্বপূর্ণ। এটি পরের চেয়ে 10 গুণ বেশি গুরুত্বপূর্ণ।

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

যখনই কোনও মানচিত্র অনন্য প্রতীক সংখ্যার চেয়ে বেশি হয়ে যায়, 9 মানুষের মনে, আপনি বামে সংখ্যায় একটি যুক্ত করুন।

3+3=6

এই ক্ষেত্রে, সংখ্যাটি এখনও একটি একক "স্লট" এর মধ্যে ফিট করে

5+5=10. This situation is called an overflow.

সুতরাং মানুষ সর্বদা পর্যাপ্ত অনন্য প্রতীক না থাকার সমস্যাটি মোকাবেলা করে। কম্পিউটারটি এটি মোকাবেলা করার জন্য সিস্টেম না থাকলে কেবল একটি সংখ্যা অতিরিক্ত ছিল ভুলে এটি 0 লিখবে। ভাগ্যক্রমে, কম্পিউটারগুলির এই ক্ষেত্রে উত্থাপিত একটি "ওভারফ্লো পতাকা" রয়েছে।

987+321 is more difficult.

আপনি স্কুলে একটি পদ্ধতি শিখে থাকতে পারেন। একটি অ্যালগরিদম। অ্যালগরিদম বেশ সহজ। দুটি বাম প্রতীক যুক্ত করে শুরু করুন।

7+1=8, we now have ...8 as the result so far

তারপরে আপনি পরবর্তী স্লটে যান এবং একই সংযোজনটি সম্পাদন করুন।

8+2=10, the overflow flag is raised. We now have ...08, plus overflow.

যেহেতু আমাদের ওভারফ্লো ছিল তাই এর অর্থ হ'ল আমাদের পরবর্তী সংখ্যায় 1 যুক্ত করতে হবে।

9+3=12, and then we add one due to overflow. ...308, and we had another overflow.

যোগ করার মতো কোনও সংখ্যা নেই, সুতরাং আমরা কেবল একটি স্লট তৈরি করি এবং 1 টি সন্নিবেশ করাই কারণ ওভারফ্লো পতাকাটি উত্থাপিত হয়েছিল।

1308

একটি কম্পিউটার এটি ঠিক একইভাবে করে, কেবলমাত্র 2 টির মতো 32 or 32 বা আরও ভাল 2 ^ 64 বিভিন্ন চিহ্ন রয়েছে, 10 টি মানুষের পরিবর্তে।

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

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


ইন আমার মন আমি 36 জানি, কিন্তু আমি সাধারণত শুধুমাত্র তাদের 16 ব্যবহার করুন।
কাইল স্ট্র্যান্ড

'একটি কম্পিউটার সংখ্যাগুলি এনকোড করতে বিট ব্যবহার করে তবে এটি গুরুত্বপূর্ণ নয়' ' ব্যবহারকারী প্রায় 32 বিট শব্দ জিজ্ঞাসা করার প্রসঙ্গে এবং কীভাবে তারা 2 ^ 32-1 এর চেয়ে বড় সংখ্যার সঞ্চয় করতে ব্যবহৃত হয় তা অত্যন্ত গুরুত্বপূর্ণ।
HörmannHH

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

3

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


0

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

আপনি যখন 8 টি বিটযুক্ত দুটি সংখ্যা যুক্ত করেন, আপনি পেতে পারেন সর্বাধিক সংখ্যা (0xFF + 0xFF = 1FE)। প্রকৃতপক্ষে, আপনি যদি 8-বিটের দুটি সংখ্যাকে গুণ করেন তবে আপনি যে বৃহত্তম সংখ্যাটি পেতে পারেন (0xFF * 0xFF = 0xFE01) এখনও 16 বিট, 8-বিটের দ্বিগুণ।

এখন, আপনি ধরে নিচ্ছেন যে কোনও এক্স-বিট প্রসেসর কেবল এক্স-বিটের ট্র্যাক রাখতে পারে। (উদাহরণস্বরূপ, একটি 8-বিট প্রসেসর কেবল 8 বিটের ট্র্যাক রাখতে পারে)) এটি সঠিক নয়। 8-বিট প্রসেসর 8 বিট খণ্ডে ডেটা গ্রহণ করে। (এই "খণ্ডগুলিতে" সাধারণত একটি আনুষ্ঠানিক শব্দ থাকে: একটি "শব্দ"--বিট প্রসেসরে 8-বিট শব্দ ব্যবহৃত হয় a৪-বিট প্রসেসরে, bit৪ বিট শব্দ ব্যবহার করা যেতে পারে))

সুতরাং, আপনি যখন কম্পিউটারটি 3 বাইট দেবেন:
বাইট # 1: MUL নির্দেশনা
বাইট # 2: হাই অর্ডার বাইট (যেমন, 0xA5)
বাইট # 3: নিম্ন অর্ডার বাইট (উদাহরণস্বরূপ, 0xCB)
কম্পিউটার একটি ফলাফল তৈরি করতে পারে যে 8 বিট বেশী। সিপিইউ এর মতো ফলাফল তৈরি করতে পারে:
0100 0000 0100 0010 xxxx xxxx xxxx xxxx 1101 0111
ওরফে:
0x4082xxxxD7
এখন, আমি আপনাকে এটির জন্য ব্যাখ্যা করতে পারি:
0x এর অর্থ নীচের সংখ্যাগুলি হেক্সাডেসিমাল।
আমি মুহুর্তে আরও বিশদে "40" আলোচনা করব।
82 "বি" রেজিস্ট্রারের অংশ, এটি 8 টি বিটের একটি সিরিজ।
xx এবং xx "বি" রেজিস্ট্রার এবং "সি" রেজিস্টার নামকরণ করা অন্য দুটি নিবন্ধের অংশ। আমি সেই বিটগুলি জিরো বা একটিতে পূরণ না করার কারণটি হ'ল কোনও "ADD" নির্দেশনা (সিপিইউতে প্রেরণ করা) সেই বিটগুলি নির্দেশের দ্বারা অপরিবর্তিত হতে পারে (যেখানে আমি এই উদাহরণে ব্যবহার করি এমন অন্যান্য বিটগুলির মধ্যে বেশিরভাগই হতে পারে) কিছু পতাকা বিট বাদে পরিবর্তন করুন)।
ডি 7 আরও বিটগুলিতে ফিট হবে, যাকে "ডি" রেজিস্টার বলা হয়।
একটি রেজিস্টার কেবল মেমরির এক টুকরো। রেজিস্টারগুলি সিপিইউতে অন্তর্নির্মিত হয়, সুতরাং সিপিইউ একটি র‌্যাম স্টিকের সাথে মেমরির সাথে যোগাযোগ করার প্রয়োজন ছাড়াই নিবন্ধগুলি অ্যাক্সেস করতে পারে।

সুতরাং 0xA5 বার 0xCB এর গাণিতিক ফলাফল 0x82D7 হয়।

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

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

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

উদাহরণস্বরূপ, আপনার একাধিক এডিডি নির্দেশনা থাকতে পারে। একটি এডিডি নির্দেশাবলী এ রেজিস্টার এবং ডি রেজিস্টারে ফলাফলের 16 বিট সংরক্ষণ করতে পারে, অন্য নির্দেশটি কেবল এ রেজিস্টারে 8 টি বিট সংরক্ষণ করতে পারে, ডি রেজিস্টারকে উপেক্ষা করবে এবং ওভারফ্লো বিটটি নির্দিষ্ট করবে। তারপরে, পরে (প্রধান র‌্যামে এ রেজিস্টারের ফলাফলগুলি সংরক্ষণ করার পরে), আপনি অন্য একটি এডিডি নির্দেশিকা ব্যবহার করতে পারেন যা কোনও রেজিস্টারে মাত্র 8 টি উচ্চ বিট সংরক্ষণ করে (সম্ভবত এ রেজিস্টার)) আপনাকে ওভারফ্লো পতাকা ব্যবহার করতে হবে কিনা আপনি কোন গুণটি নির্দেশ ব্যবহার করেন তার উপর নির্ভর করুন।

(সাধারণত একটি "আন্ডারফ্লো" পতাকাও রয়েছে, যদি আপনি পছন্দসই ফলাফলের সাথে মানানসই পরিমাণের বেশি বিয়োগ করেন))

কীভাবে জটিল জিনিস পেল তা আপনাকে কেবল তা দেখানোর জন্য:
ইন্টেল 4004 4 বিট সিপিইউ
ছিল ইন্টেল 8008 একটি 8-বিট সিপিইউ ছিল। এটিতে A, B, C এবং D. নামে 8-বিট রেজিস্টার
ছিল The ইন্টেল 8086 একটি 16-বিট সিপিইউ ছিল। এটিতে এএক্স, বিএক্স, সিএক্স এবং ডিএক্স নামের ১ 16-বিট রেজিস্টার ছিল।
ইন্টেল 80386 একটি 32-বিট সিপিইউ ছিল। এটিতে EAX, EBX, ECX, এবং EDX নামে 32-বিট রেজিস্টার ছিল।
ইন্টেল x64 সিপিইউতে রেএক্স, আরবিএক্স, আরসিএক্স, এবং আরডিএক্স নামে 64৪-বিট রেজিস্টার রয়েছে। X64 চিপগুলি 16-বিট কোড চালাতে পারে (কিছু অপারেটিং মোডে), এবং 16-বিট নির্দেশাবলী ব্যাখ্যা করতে পারে। এটি করার সময়, বিটস যা এক্স রেজিস্টার তৈরি করে সেগুলি ইএএক্স নিবন্ধকৃত বিটগুলির অর্ধেক বিট, যা বিএক্স রেজিস্টারকে অর্ধেক করে তোলে। সুতরাং যে কোনও সময় আপনি AX এর মান পরিবর্তন করেন, আপনি EAX এবং RAXও পরিবর্তন করছেন, কারণ AX দ্বারা ব্যবহৃত বিটগুলি RAX দ্বারা ব্যবহৃত বিটের অংশ। (আপনি যদি 65,536 এর একাধিক মানের দ্বারা EAX পরিবর্তন করেন তবে নিম্ন 16 বিটগুলি অপরিবর্তিত রয়েছে যাতে AX পরিবর্তন হবে না you ।)

আমি উল্লেখ করেছি কেবল তার চেয়ে বেশি পতাকা এবং নিবন্ধ রয়েছে। একটি সাধারণ ধারণাগত উদাহরণ দেওয়ার জন্য আমি সাধারণভাবে ব্যবহৃত কয়েকটি বেছে নিয়েছি।

এখন, আপনি যদি 8-বিট সিপিইউতে থাকেন, আপনি যখন মেমোরিতে লিখেন, আপনি 8 বিটগুলির ঠিকানা উল্লেখ করতে সক্ষম হবেন সম্পর্কে কিছু নিষেধাজ্ঞাগুলি পেতে পারেন, 4 বিট বা 16 বিটের কোনও ঠিকানা নয়। সিপিইউর উপর ভিত্তি করে বিশদগুলি পৃথক হবে, তবে আপনার যদি এই ধরনের বিধিনিষেধ থাকে তবে সিপিইউ 8-বিট শব্দের সাথে কথা বলছে, এ কারণেই সিপিইউকে সাধারণত "8-বিট সিপিইউ" বলা হয়।


আমি আমার প্রশ্নের টুকরোগুলির মতো মনে করি এই প্রশ্নের অন্য কয়েকটি উত্তরকে পুনরায় পুনরায় পুনরুক্ত করে। যাইহোক, আমি যখন অন্য লিখিত প্রশ্নটি লিখেছিলাম তখন থেকে আমি কন্টেন্টটি প্রথম লিখলাম তখন তা লক্ষ্য করা গেল না। এছাড়াও, আমি সি ভাষায় কিছু কোড সহ অ্যানিমিজমের জবাবের প্রশংসা করি , আমি অনুভব করেছি যে আমার লিখিত সামগ্রীটি কীভাবে সংসদীয় কাজ করে সে সম্পর্কে কিছু বিবরণ সরবরাহ করেছিল যা সিপিইউর আসল ক্রিয়া / নকশার নিকটবর্তী। সুতরাং আমার উত্তরটি সর্বোত্তম উত্তর হতে চেষ্টা করছে না যা অন্য সমস্ত "চেয়ে ভাল", তবে কেবল পরিপূরক; কিছু অতিরিক্ত অন্তর্দৃষ্টি দিয়ে অন্য দৃষ্টিকোণ যুক্ত করা
তোগাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.