c++ - সমস - কিভাবে ল্যাপটপে উইন্ডোজ দিতে হয়




বিট সাইজ 64 বিট উইন্ডোজ কত দীর্ঘ? (4)

MSDN এ এই নিবন্ধটি বিভিন্ন প্রকারের উপনাম (উইন্ডোজগুলিতে উপলব্ধ) উল্লেখ করে যা তাদের প্রস্থের সাথে আরও স্পষ্ট:

http://msdn.microsoft.com/en-us/library/aa505945.aspx

উদাহরণস্বরূপ, যদিও আপনি 64-বিট স্বাক্ষরিত অবিচ্ছেদ্য মানের রেফারেন্স করতে উল্লংঙ্গ ব্যবহার করতে পারেন তবে আপনি UINT64 ব্যবহার করতে পারেন। (একই ULONG এবং UINT32 জন্য যায়।) সম্ভবত এই একটি সামান্য পরিষ্কার হবে?

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

  • উইন্ডোজ: long এবং int 32-বিট লম্বা থাকে এবং 64-বিট পূর্ণসংখ্যার জন্য বিশেষ নতুন ডাটা প্রকারগুলি সংজ্ঞায়িত করা হয়।

( http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2 থেকে)

আমি কি ব্যবহার করা উচিত? উইন্ডোজ না থাকলে long sww ((un) স্বাক্ষরিত প্রস্থের মতো কিছু সংজ্ঞায়িত করতে হবে, এবং অন্যথায় লক্ষ্য সিপিপি বিটসিজে চেক করবেন?


আপনার কম্পাইলার / প্ল্যাটফর্মের জন্য এটি জানতে সহজতম উপায়:

#include <iostream>

int main() {
  std::cout << sizeof(long)*8 << std::endl;
}

8 দ্বারা Themultiplication বাইট থেকে বিট পেতে হয়।

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


ইউনিক্স বিশ্বের, 64-বিট প্ল্যাটফর্মের জন্য পূর্ণসংখ্যা এবং পয়েন্টারের মাপের কয়েকটি সম্ভাব্য ব্যবস্থা ছিল। দুটি বেশিরভাগ ব্যাপকভাবে ব্যবহৃত হয় ILP64 (আসলে, এর মধ্যে মাত্র কয়েকটি উদাহরণ রয়েছে; ক্রাই এক রকম ছিল) এবং LP64 (প্রায় সবকিছুর জন্য)। অ্যাক্রোনিয়ামগুলি 'int, long, পয়েন্টারগুলি 64 বিট' এবং 'লম্বা, পয়েন্টারগুলি 64-বিট' থেকে আসে।

Type           ILP64   LP64   LLP64
char              8      8       8
short            16     16      16
int              64     32      32
long             64     64      32
long long        64     64      64
pointer          64     64      64

আইএলপি 64 সিস্টেমটি এলপি 64 এর পক্ষে পরিত্যক্ত হয়েছিল (অর্থাৎ, প্রায় সব পরে প্রবেশকারীরা এল্প 64 ব্যবহার করেছিলেন, এটি অ্যাসপেন গ্রুপের সুপারিশগুলির উপর ভিত্তি করে; 64-বিট ক্রিয়াকলাপের দীর্ঘ ঐতিহ্যের সাথে শুধুমাত্র সিস্টেমগুলি একটি ভিন্ন প্রকল্প ব্যবহার করে)। সমস্ত আধুনিক 64-বিট ইউনিক্স সিস্টেম LP64 ব্যবহার করে। ম্যাকোস এক্স এবং লিনাক্স উভয় আধুনিক 64-বিট সিস্টেম।

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

আপনি যদি আপনার সফটওয়্যারটি প্ল্যাটফর্ম-নিরপেক্ষ পূর্ণসংখ্যা টাইপ নামগুলির চারপাশে ডিজাইন করেন, সম্ভবত C99 <inttypes.h> ব্যবহার করে, যা যখন প্ল্যাটফর্মগুলিতে উপলব্ধ হয়, তখন স্বাক্ষরিত (তালিকাভুক্ত) এবং স্বাক্ষরিত (তালিকাভুক্ত নয়) সহ প্রিফিক্স প্রদান করে 'U'):

  • int8_t - 8-বিট পূর্ণসংখ্যা
  • int16_t - 16-বিট পূর্ণসংখ্যা
  • int32_t - 32-বিট পূর্ণসংখ্যা
  • int64_t - 64-বিট পূর্ণসংখ্যা
  • uintptr_t - পয়েন্টার রাখা যথেষ্ট বড় স্বাক্ষরিত পূর্ণসংখ্যা
  • intmax_t - প্ল্যাটফর্মের পূর্ণসংখ্যাটির বৃহত্তম আকার ( int64_t চেয়ে বড় হতে পারে)

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

কিন্তু, প্রশ্নটি (অবিশ্বাসে) নির্দেশ করে, 64-বিট মেশিনে পূর্ণসংখ্যা ডেটা প্রকারের আকারের জন্য বিভিন্ন সিস্টেম রয়েছে। এটি ব্যবহার করুন; পৃথিবী পরিবর্তন করতে যাচ্ছে না।


মাইক্রোসফ্ট এছাড়াও পয়েন্টার হিসাবে একই আকার যে পূর্ণসংখ্যার জন্য UINT_PTR এবং INT_PTR সংজ্ঞায়িত করেছেন।

এখানে মাইক্রোসফ্ট নির্দিষ্ট প্রকারের একটি তালিকা রয়েছে - এটি তাদের ড্রাইভার রেফারেন্সের অংশ, তবে আমি বিশ্বাস করি এটি সাধারণ প্রোগ্রামিংয়ের জন্যও বৈধ।





porting