আমার ওএস 32-বিট বা 64-বিট?


53

এটি এখন খুব বেশি গুরুত্বপূর্ণ নয়, তবে মাঝে মাঝে কারও জানা দরকার।

এখানে একটি সরল গল্ফ: কোনও ব্যবহারকারী ইনপুট না নিয়ে, আমাকে বলুন যে কম্পিউটারে কোডটি চালিত হচ্ছে সে কম্পিউটারটি একটি 64৪-বিট অপারেটিং সিস্টেম, বা একটি 32-বিট অপারেটিং সিস্টেমে রয়েছে কিনা!

যদি কোডটি 32-বিট অপারেটিং সিস্টেমে চালিত হয় তবে "32" মুদ্রণ করুন, যদি কোডটি একটি 64 বিট অপারেটিং সিস্টেমে চালিত হয় তবে "64" আউটপুট দিন। গুরুত্বপূর্ণ: বর্ণমালার অক্ষরের অন্য কোনও খালি খালি স্ট্রিংটি 32 বা 64 বিট না হলেও মুদ্রণ করুন।

দয়া করে নোট করুন যে 32৪ বিট অপারেটিং সিস্টেম সহ একটি কম্পিউটারে চলমান একটি 32 বিট প্রোগ্রামের "64" আউটপুট হওয়া উচিত। আপনি ধরে নিতে পারেন যে ব্যবহারকারীরা যখনই সম্ভব সম্ভব bit৪ বিট সফটওয়্যার ব্যবহার করবেন।

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

স্বাভাবিক বিধি প্রযোজ্য।

দ্রষ্টব্য: যদি আপনার উত্তরটি কেবল 32 বা 64 টি মুদ্রণের জন্য বোঝানো হয় তবে এটি ALC কেস নয়, আমি এটি গ্রহণ করব তবে এটি কোনও প্রতিযোগিতামূলক উত্তর নয়।

আমি চেষ্টা করব এবং পরে বিভিন্ন ওএসে এই কোডগুলি চালনার কিছু ফলাফল পোস্ট করব!


5
সুতরাং "দয়া করে নোট করুন যে bit৪ বিট অপারেটিং সিস্টেম সহ একটি কম্পিউটারে চলমান একটি 32 বিট প্রোগ্রাম" 64 "আউটপুট দেয় You আপনি ধরে নিতে পারেন যে ব্যবহারকারীরা যখনই সম্ভব সম্ভব 64 বিট সফ্টওয়্যার ব্যবহার করবেন" " এর অর্থ হ'ল যদি অনুবাদক / সংকলক ইত্যাদি 32 বিট এবং bit৪ বিট উভয় ক্ষেত্রে উপলব্ধ থাকে তবে একটি 32 বিট ওএস, সর্বদা দোভাষী / ইত্যাদির 32 বিট সংস্করণটি চালাবে এবং bit৪ বিট ওএস সর্বদা inter৪ বিট ইন্টারপ্রেটার চালাবে / ইত্যাদি। সুতরাং প্রোগ্রাম 32 বা 64 এবং OS 32 বা 64 হচ্ছে হচ্ছে মধ্যে পার্থক্য সম্পর্কে উদ্বেজক, মূলত হয় শুধুমাত্র শুধুমাত্র 32 বিট বাস্তবায়নের সঙ্গে ভাষার জন্য একটি সমস্যা। রাইট?
লন্ডন হোয়াইট

2
প্রোগ্রাম সংকলনের জন্য যদি 32-বিট সংকলক ব্যবহার করা হয় তবে এখানে অনেকগুলি সমাধান একটি 64-বিট ওএসে "32" মুদ্রণ করবে। এটা কি ঠিক আছে?
মার্টিন রোসনাউ

15
"উইন্ডোজ ৪.১০" পৃথিবীর কোনটি? তার মানে উইন্ডোজ 98? অথবা এর অর্থ উইন্ডোজ এনটি 4? এর চেয়ে ‘নতুন’ বলে আপনি কী ভাবেন? এটি একটি অত্যন্ত দুর্বল চিন্তিত চ্যালেঞ্জ বলে মনে হচ্ছে ।
কোডি গ্রে

13
এখানে কোনও "অফিসিয়াল উইন্ডোজ স্পেক" নেই এবং উইন্ডোজ 98 কে "উইন্ডোজ 4.10" বলে উল্লেখ করা হয় না । আপনি আক্ষরিক অর্থে প্রথম। সুতরাং সম্ভবত সংস্করণ নম্বর ব্যবহার করে শীতল বা অফিসিয়াল শোনার চেষ্টা করার পরিবর্তে আপনার কেবলমাত্র প্রকৃত পণ্যের নাম ব্যবহার করা উচিত । যাইহোক, উইন্ডোজ 9 এক্স কখনই কোনও 64-বিট বিল্ডে উপলব্ধ ছিল না, তবে কেবলমাত্র আমার উইন্ডোজ 98 এ চলে এবং কেবল "32" ফিরিয়ে দেয় এমন একটি এন্ট্রি জমা দেওয়া কি আমার পক্ষে বৈধ? খুব অন্যায় / অপ্রচলিত / আনসার্স্টিং মনে হচ্ছে তবে প্রযুক্তিগতভাবে আপনার বিধি দ্বারা অনুমোদিত হবে।
কোডি গ্রে

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

উত্তর:


44

x86 বিধানসভা (বহুগ্লাট), 13 বাইট

বাইটকোড:

31 c0 b4 80 48 70 05 04 40 83 e0 60 c3

একটি ফাংশন সংজ্ঞা দেয় যা 32-বিট, 64-বিট যদি 64-বিট এবং 16-বিট হিসাবে 32767 হিসাবে ব্যাখ্যা করা হয় তবে 32 প্রদান করে।

আমি একটি বহুভুজ তৈরি করতে চেয়েছিলাম যা উইন্ডোজ এবং লিনাক্সে চলেছিল, তবে এটি যা ভাবা হয়েছিল তার চেয়ে অনেক কঠিন। এটি নিশ্চিত যে আমি লিঙ্ক ছাড়াই নন-16-বিট উইন্ডোতে কোনও মান প্রিন্ট করার কোনও উপায় নেই sure

ব্যাখ্যা

এই কোডটি যে আর্কিটেকচারটি চলছে তা নির্ধারণ করতে দুটি টি ব্যবহার করে। প্রথমটি 16 এবং 32 বিটগুলিতে নির্দেশ 0x48 this, এটি তবে b৪ dec %eaxবিটের ক্ষেত্রে এটি একটি নির্দেশ-আকারের উপসর্গ। দ্বিতীয় কাহিনীটি একই নির্দেশনা, তবে, আমরা যখন 0x8000 মান প্রয়োগ করি তখন সর্বাধিক উল্লেখযোগ্য বিটটি কেবল তখনই উল্টে যায় যখন নিবন্ধের আকার 16 বিট হয়, ওভারফ্লো পতাকা নির্ধারণ করে এবং আমাদের ব্যবহার করতে দেয় jo

16 বিটে, এই কোডটি নিম্নলিখিত হিসাবে ব্যাখ্যা করা হয়েছে:

   0:   31 c0                   xor    %ax,%ax    /* 0x0000 */
   2:   b4 80                   mov    $0x80,%ah  /* 0x8000 */
   4:   48                      dec    %ax        /* 0x7fff */
   5:   70 05                   jo c              /* taken  */
   7:   04 40                   add    $0x40,%al
   9:   83 e0 60                and    $0x60,%ax
   c:   c3                      ret               /* 0x7fff */

32 বিটে, এই কোডটি নিম্নলিখিত হিসাবে ব্যাখ্যা করা হয়েছে:

   0:   31 c0                   xor    %eax,%eax   /* 0x00000000 */
   2:   b4 80                   mov    $0x80,%ah   /* 0x00008000 */
   4:   48                      dec    %eax        /* 0x00007fff */
   5:   70 05                   jo c               /* not taken  */
   7:   04 40                   add    $0x40,%al   /* 0x00007f3f */
   9:   83 e0 60                and    $0x60,%eax  /* 0x00000020 */
   c:   c3                      ret

64 বিটগুলিতে, এই কোডটি নিম্নলিখিত হিসাবে ব্যাখ্যা করা হয়েছে:

   0:   31 c0                   xor    %eax,%eax   /* 0x00000000 */
   2:   b4 80                   mov    $0x80,%ah   /* 0x00008000 */
   4:   48 70 05                rex.W jo c         /* not taken  */
   7:   04 40                   add    $0x40,%al   /* 0x00008040 */
   9:   83 e0 60                and    $0x60,%eax  /* 0x00000040 */
   c:   c3                      ret

এটি সম্ভবত
লিডে রয়েছে

1
একটি খুব ঝরঝরে ধারণা, তবে প্রয়োগ হিসাবে, যদি 32-বিট বাইনারি হিসাবে একত্রিত হয়ে a৪-বিট অপারেটিং সিস্টেমে চালিত হয় তবে এটি ভুল মানটি ফিরিয়ে আনবে।
কোডি গ্রে

বিধিগুলি থেকে @ কোডি গ্রে: আপনি ধরে নিতে পারেন যে ব্যবহারকারীরা যখনই সম্ভব সম্ভব bit৪ বিট সফটওয়্যার ব্যবহার করবেন। আমি মনে করি এটির অর্থ হ'ল ফাংশনগুলির জন্য আমরা ধরে নিতে পারি যে কলার কোড যখনই সম্ভব .৪ বিট is
রুসলান

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

বাইট নেই 48প্রতিনিধিত্ব dec %eax16 বিট মোডে?
ফুক্লভ

48

x86 মেশিন কোড, 12 বাইট

8c c8 83 f8 23 b0 20 75 02 00 c0 c3

Ungolfed:

getKernelBitness:
    mov eax,cs
    cmp eax,0x23 ; 32 bit process on 64 bit kernel has this selector in CS
    mov al,32
    jne kernelIs32Bit
    add al,al    ; return value in eax
kernelIs32Bit:
    ret

এই ফাংশনটি লিনাক্সে যখন ELF32 এ ব্যবহৃত হয়, i386 সিসভি এবিআই অনুসরণ করে, পাশাপাশি উইন্ডোজ / ওয়াইন যখন পিই 32 তে ব্যবহৃত হয়, stdcallকলিং কনভেনশন অনুসরণ করে।


প্রকৃতপক্ষে অনুসরণ করা হলে একজন আরও বাইট গণনা হ্রাস করতে পারে অন্য কোনও পদ্ধতির একজন
রুস্লান

এই তাত্ত্বিকভাবে একটি 32/64 বিট পরিবেশে কি করবে?
tuskiomi

1
@tuskiomi যাই হোক, এই কোড এখনও পারেন 32 বা 64 16 বিট মোডে এই বাইট ক্রম ব্যাখ্যা থেকে স্মৃতিবর্ধনবিদ্যা পরিবর্তনের হবে শুধু পার্থক্য ফিরে আসবে eaxথেকে ax। সুতরাং, যদি নির্বাচকটি csঘটে থাকে 0x23তবে ফলাফলটি 64 হবে, অন্যথায় 32।
রুশলান

যদিও এটি দুটি নির্দিষ্ট অপারেটিং সিস্টেমের সাথে সুনির্দিষ্ট মনে হয়। আপনার কাছে সহজেই সিএস = 0x23 সহ একটি 32-বিট সিস্টেম থাকতে পারে। পরিবর্তে আমার 8-বাইট উত্তরটি দেখুন যা পরিবর্তে সিপিইউকে লক্ষ্য করে।
পিটার ফেরি

@ পেটারফেরি হ্যাঁ, এ কারণেই আমার আর একটি উত্তর আছে । তবে আপনার এটি 2 বাইট দ্বারা আউটগল্ফ করে।
Ruslan

32

গণিত, 17 বাইট

$SystemWordLength

13
অবশ্যই একটি বিল্টিন আছে! (গুলি (+1)
তুস্কিওমি

আপনার উচিত হয় একটি যুক্ত করা &বা নির্দিষ্ট করা উচিত না যে এটি REPL- এ রয়েছে?
LegionMammal978

5
@ LegionMammal978 "কোডটি যদি 32-বিট অপারেটিং সিস্টেমে চালানো হয় তবে কোডটি একটি 32 বিট অপারেটিং সিস্টেমে চালিত হলে" 32 "মুদ্রণ করুন," 64 "আউটপুট দিন ( যদি এটি না হয়। " "কোনও ক্রিয়াকলাপ সরবরাহ করে না যা চালিত হলে এটি করে"; শুধু "এটি করুন"।
প্যাট্রিক স্টিভেন্স

17
@ পেট্রিকস্টেভেনস: যদি প্রশ্নটি জমা দেয় কী কী ফর্মটি গ্রহণ করা উচিত তা যদি তা নির্দিষ্ট না করে তবে এটি কোনও প্রোগ্রাম বা ফাংশন, তবে একটি স্নিপেট নয়, ডিফল্টরূপে

3
@ ais523 আমি যুক্তি দিয়েছি যে প্রোগ্রাম, ফাংশন এবং স্নিপেটের মধ্যে ম্যাথামেটিকায় কোনও পার্থক্য নেই। সব কিছুই কেবল একটি অভিব্যক্তি।
নেজেনিসিস

21

বুট লোডার

আপনি কী জানতেন যে গ্রুব এবং আইপিএক্সই দু'জনেরই ট্যুরিংয়ের সম্পূর্ণ প্রোগ্রামিং ভাষা রান-টাইমে অ্যাক্সেসযোগ্য ছিল? বুট লোডারগুলির সিসলিনাক্স পরিবার সেগুলি না করে তবে এটি করতে পারে।

আইপিএক্সই, 36 বাইট

#!ipxe
cpuid --ext 29 && echo 64 || echo 32

স্ক্রিপ্টটি দূর থেকে চালিত হলে প্রথম লাইনটি প্রয়োজন, তবে কমান্ড লাইনে সরাসরি টাইপ করা হয় না।

GRUB, 42 বাইট

if cpuid -l ; then
echo 64
else
echo 32
fi

সিসলিনাক্স, 186 বাইট

এটিতে তিনটি ফাইল লাগে প্রথমে সিসলিনাক্স.সি.পি.জি. (বা isolinux.cfg ইত্যাদি)।

label a
  kernel ifcpu64.c32
  append s -- t

label s
  kernel menu.c32
  append s.cfg

label t
  kernel menu.c32
  append t.cfg

default a
prompt 0
timeout 0

এবং t.cfg

menu title 32

উত্তর s.cfg

menu title 64

এটির জন্য একটি শক্ত অংশটি হ'ল সিসলিনাক্সের কোনও সাধারণ পাঠ্য প্রদর্শনের ক্ষমতা নেই, সুতরাং মেনুটি আপত্তিজনক হয়।


আপনি কোনও বুট লোডার দিয়ে ওএস রেজোলিউশনটি বলতে পারবেন কিনা তা আমি নিশ্চিত নই, তবে আমি ধারণাটি পছন্দ করি
tuskiomi

এটি সিপিইউ পরীক্ষা করে এবং সঠিক অপারেটিং সিস্টেম নির্বাচন করতে ব্যবহৃত হয়। এটি আমার আনবুট প্রকল্পের মূলত গল্ফ কোড।
hildred

2
সুতরাং এটি স্থাপত্যের উপর ভিত্তি করে ওএস পরিবর্তন করে। বক্সের বাইরে চিন্তা. আমি পছন্দ করি.
tuskiomi

বাইকাউন্ট কি?
Restioson

1
@ ছোট্ট আমি বিশ্বাস করি আপনি যদি ## iPXE, 36 bytes### ipxe 36
এটির

21

জুলিয়া 14 13 বাইট

n->8sizeof(1)

ব্যাখ্যা করা:

  • আনন ফাংশন, nothingকোনও পূর্ণসংখ্যার 32 বা 64 ব্যবহার করে (সহ ) গ্রহণ করে
  • পূর্ণসংখ্যার আক্ষরিক ধরণের টাইপ হয় Intযা 32 বিট বা 64 বিটের উপর নির্ভর করে হয় হয় হয় একটি Int32বা একটি Int64(এর1 কোনও অঙ্ক হতে পারে)
  • একটি ফাংশন কলের আগে একটি সংখ্যা স্থাপন একটি ক্ষণস্থায়ী অবস্থান গুণ করে
  • এটি মুলত একটি minified সংস্করণ কোডSys.WORD_SIZE ব্যবহৃত rahnema1 এর উত্তর

অন্য মজার উত্তর হল ()->"$(Int)"[4:5] , তবে আমি সেইটির মধ্যে গণনাটি পেতে পারি না।


-১ @ রোমান গ্রাফকে ধন্যবাদ



19

জুলিয়া, 20 17 16 বাইট

n->Sys.WORD_SIZE

* লায়ন্ডনহাইট 3 বাইট সংরক্ষণের জন্য ধন্যবাদ * @ রোমানগ্রাফকে ধন্যবাদ একটি বাইট সংরক্ষণ করেছেন

পূর্ববর্তী উত্তর:

()->Sys.WORD_SIZE
print(Sys.WORD_SIZE)

এটি অনলাইন চেষ্টা করুন!


1
আমি ব্যক্তিগতভাবে, এই মত!
tuskiomi

2
কনভেনশন অনুসরণ করে: কোড golf.meta.stackexchange.com/q/2419/62131 আপনি করে 3 বাইট ছাঁটাই করতে পারেন()->Sys.WORD_SIZE
লিন্ডন হোয়াইট


14

জাভাস্ক্রিপ্ট (নোড.জেএস), 24 বাইট

_=>process.arch.slice(1)

এটি একটি ফাংশন এবং আয় হয় '32', '64'বা হবেও যদি 'rm'


+1, তবে আমি মনে করি একটি 64 বিট খিলানটি 32 বিট ওএস চলতে পারে যদিও
অক্টোপাস

1
32-বিট উইন্ডোজে আমাকে '32' দেয়, তাই এটি কাজ করে বলে মনে হচ্ছে।
কেন YN

5
আপনি আরপিএল এবং এর osপরিবর্তে ব্যবহার করছেন যদি আপনি 7 বাইট processos.arch().slice(1)
ছাঁটাই করতে পারেন

এটি প্রকৃত ওএস আর্কিটেকচার নয়, প্রক্রিয়াটিতে রিপোর্ট করা ওএস আর্কিটেকচারকে ফিরিয়ে দেয়। সুতরাং এটি লিনাক্সে কাজ করে না। (আপনার পছন্দসই সার্চ ইঞ্জিনে পাঞ্চ "সেটার্চ"))
ডেভিড শোয়ার্জজ

@ ডেভিডশওয়ার্টজ আমার লিনাক্স বাক্সে ঠিকঠাক কাজ করে যদি না আমি ভুল বুঝি, তবে পিপিসিজি-তে আমরা ব্যবহারকারীকে খিলানটি পরিবর্তনের দিক থেকে একটি অপরিবর্তিত পরিবেশ ধরে নিতে পারি
ডাউনওয়েট

13

সি, 33 31 29 23 বাইট

f(){return sizeof&f*8;}

মন্তব্যকারীদের @ সেলিংক্যাট এবং গল্ফ করার টিপসের জন্য @ ডেনিসকে ধন্যবাদ!


13
এটি আরও বলেছে যে সাধারণ কোড গল্ফের নিয়মগুলি প্রয়োগ হয় এবং কোনও ফাংশন থেকে ফিরে আসা I / O এর জন্য আমাদের ডিফল্টের অংশ।
ডেনিস

11
এটি কি আপনি 32 বা 64 বিট প্রোগ্রাম হিসাবে সংকলন করবেন কিনা তার উপর নির্ভর করে না?
কেন YN

4
এটি প্রয়োজনীয়তার সাথে সম্মতি দেয় না। " দয়া করে নোট করুন যে bit৪ বিট অপারেটিং সিস্টেম সহ একটি কম্পিউটারে চলমান একটি 32 বিট প্রোগ্রামের" 64 "আউটপুট পাওয়া উচিত This" এটি আপনাকে ওএস কী নয় প্রোগ্রামটি কীভাবে সংকলিত হয়েছিল তা বলে tells
ডেভিড শোয়ার্টজ

2
@ ডেভিডশওয়ার্টজ "আপনি ধরে নিতে পারেন যে ব্যবহারকারীরা যখনই সম্ভব সম্ভব 64৪ বিট সফটওয়্যার ব্যবহার করবেন।"
ক্লাস লিন্ডব্যাক

2
এটির জন্য দুঃখিত, তবে আকারের সংকলন সময়ে মূল্যায়ন করা হয়। সুতরাং আপনি যদি 32 বিট এক্সপি সংকলন করেন এবং এটি একটি 64 বিট মেশিনে চালনা করেন তবে এটি 32 কে আউটপুট করে যখন 64৪ আউটপুট করা উচিত ( স্ট্যাকওভারফ্লো / প্রশ্ন / 2615203/… )। ভাল ধারণা যদিও!
দিনাজ

11

পাওয়ারশেল, 16 বাইট

8*[IntPtr]::Size

বাইটগুলিতে পয়েন্টার আকার পায়, বিট পেতে 8 দ্বারা গুণিত হয়।


-1 কারণyour code must be able to run on Windows 4.10 or newer
ub3rst4r

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

1
@ ub3rst4r আমি সন্দেহ করি যে এখানে বর্ণিত সমস্ত প্রোগ্রামিং ল্যাঙ্গুয়েজের উইন্ডোজ ৪.১০ তে একটি বাস্তবায়ন কাজ করছে!
মার্টিন রোজেনাউ

1
দেখে মনে হচ্ছে এটি যদি ব্যর্থ হয় তবে এটি যদি 64-বিট ওএসে 32-বিট পাওয়ারশেল হয়।
ক্রিস জে

@ ক্রিসজে কমপক্ষে উইন 10 এবং উইন2012 আর 2 এ এটি x86 পাওয়ারশেলের উপযুক্ত ফলাফলটি প্রদান করে returns লিনাক্স পরীক্ষা করা হয়নি।
বুগা রু

10

পাইথন 2, 52, 48, 42 41 বাইট

from struct import*;print calcsize("P")*8

পুরোপুরি মানবকে ধন্যবাদ!


জুম! এক মিনিটের মধ্যে লাইন পেরিয়ে।
tuskiomi

আমি বাড়ি না হওয়া পর্যন্ত এই পরীক্ষাটি চালিয়ে যাচ্ছি, তবে আমি নিশ্চিত নই যে এটি "32" এবং "64" প্রিন্ট করে, তবে অন্যান্য ক্ষেত্রে আমি আত্মবিশ্বাসী।
tuskiomi

@ টসকিওমি, এটি "32 বিট" বা "64 বিবিট"
ড্যানিয়েল

1
from struct import*;print calcsize("P")*8খাটো হয়।
সম্পূর্ণরূপে

12
যদি আপনি এটি 32৪-বিট ওএস-এ 32-বিট পাইথন-এ চালান তবে আমার মনে হয় এটি আপনার কাছে মিথ্যা। বেশিরভাগ অন্যান্য উত্তরগুলি সেভাবেই সংবেদনশীল বলে মনে হয় ...
নিক টি

10

জাভা 8, 45 বাইট

()->System.getProperty("sun.arch.data.model")

@ ডপাপ তার অর্থ কী (গুলি) তা হ'ল এটি একটি স্নিপেট, কোনও প্রোগ্রাম বা ফাংশন নয়। জাভা 8-এ, এটি কাজ করা উচিত:n=>System.getProperty("os.arch")
নন

@ নাওনিহিরে, ওরে ধন্যবাদ যে আমার মাথার উপর দিয়ে গেছে
ড্যানিয়েল

2
"যদি কোডটি 32-বিট অপারেটিং সিস্টেমে চালিত হয় তবে" 32 "মুদ্রণ করুন, যদি কোডটি একটি 64 বিট অপারেটিং সিস্টেমে চালিত হয়, তবে" 64 "আউটপুট দিন any তন্ন তন্ন। "। এটি মোটেও তা করে না ...
অলিভিয়ার গ্রাগোয়ার

4
উইন্ডোজ 98 (v4.10) এর জন্য আপনি জাভা 8 পেতে পারেন?
TessellatingHeckler

4
@ টেসেল্ল্যাটিংহেকলার জাভা 8 এর জন্য "i586" (এর অর্থ যাই হোক না কেন) প্রয়োজন। এন্ট্রিটিতে বলা হয়েছে: "আপনার কোডটি অবশ্যই উইন্ডোজ ৪.১০ বা নতুনতে চালাতে সক্ষম হবে ", "আপনার কোডটি উইন্ডোজ ৪.১০ এবং নতুনতরতে চালাতে সক্ষম হতে হবে না "। এটি একটি নতুন উইন্ডোতে চলে ।
অলিভিয়ার গ্রাগোয়ার


8

উইন্ডোজ সিএমডি, 56 52 বাইট (ধন্যবাদ বব!)

if EXIST "%ProgramFiles(x86)%" (echo 64)else echo 32

তবুও আশ্চর্যজনকভাবে লম্বা - এখন পর্যন্ত সবচেয়ে দীর্ঘ!


1
আসলে, %windir%\SysWOW64এমনকি আরও খাটো, আমার মনে হয় ...
বব

7
" উইন্ডোজ ৪.১০ বা তার থেকেও বেশি নতুন এবং আপনার পছন্দনীয় লিনাক্সের কমপক্ষে একটি গন্ধটি চালাতে সক্ষম হতে হবে " - এর জন্য লিনাক্সের কোন স্বাদ?
টেসেল্ল্যাটিংহেকলার

1
@ টেসেল্লাটিংহেকলার যদি আপনি ওয়াইন ইনস্টল করেন ...?
কেন ওয়াইএন

1
শর্টহ্যান্ড ব্যবহার সম্পর্কে কী? if EXIST "c:\Progra~3" (echo 64)else echo 32ডিফল্টরূপে আপনার আছে ProgramDataএবং Program Filesতাই তৃতীয়টি উপস্থিত থাকলে আমাদের 64 বছর হবে
মেরি

3
8-বিট ওএসের জন্য এই মুদ্রণটি কী করবে?
tuskiomi

7

সি, উইন 32 এপিআই, 103 183 বাইট

#include <windows.h>
typedef int(WINAPI*F)(HANDLE,int*);b;main(){F f=GetProcAddress(GetModuleHandle("kernel32"),"IsWow64Process");return(f!=0&&f(GetCurrentProcess(),&b)&&!b)?32:64;}

আসলে এখানে 2০ টিরও বেশি মামলা রয়েছে। আসুন তাদের পরীক্ষা করা যাক

  • সবচেয়ে সহজ পদ্ধিতি হল: IsWow64Process বিদ্যমান নেই: আমরা 32 বিট ওএস এ আছি

পরবর্তী দুটি ক্ষেত্রে আমাদের জ্ঞান থাকা দরকার যে আমাদের বাইনারিটি 32 বিট কার্যকর হতে পারে। এবং আউট প্যারামিটার মধ্যে কি হবে এই বিবরণIsWow64Process

যদি WOW64 এর অধীনে প্রক্রিয়াটি চলমান থাকে তবে সত্যে সেট করা একটি মানের একটি পয়েন্টার। যদি প্রক্রিয়াটি 32-বিট উইন্ডোজ এর অধীনে চলছে, মানটি FALSE তে সেট করা থাকে। যদি প্রক্রিয়াটি একটি -৪-বিট অ্যাপ্লিকেশন হয় যা -৪-বিট উইন্ডোজের অধীনে চলছে, মানটিও মিথ্যাতে সেট করা থাকে।

এটি আমাদের দুটি অতিরিক্ত কেস সহ ছেড়ে দেয়:

  • IsWow64Process উপস্থিত রয়েছে এবং সত্য ফলন দেয় -> আমরা একটি 64 বিট মেশিনে আছি
  • IsWow64Process বিদ্যমান এবং ফলস ফলস -> আমরা একটি 32 বিট মেশিনে আছি

আমরা part৪-বিট উইন্ডোজে where৪-বিট অ্যাপ্লিকেশনটি মিথ্যা ফল দেয় এমন অংশটি নিয়ে আমরা উদ্বিগ্ন নই। আমরা যেমন জানি যে আমাদের অ্যাপ্লিকেশনটি 32-বিট

ওহ এবং আরও একটি অতিরিক্ত কেস রয়েছে যা এই চ্যালেঞ্জের আওতায় নেই এবং যাই হোক না কেন বিরল হওয়া উচিত:

  • ইসডাব্লু cess৪ প্রসেস বিদ্যমান, তবে এটি ব্যর্থ হয়: আমরা ডিফল্ট 32-বিট মেশিনে।

এটি বেশিরভাগ উইন্ডোজ এনটি অপারেটিং সিস্টেমগুলি আবরণ করা উচিত। উইন 64৪-বিট, উইন 64৪-বিট, উইন .1.১২-বিট এবং উইনএক্সপি এসপি ৩২-বিটে কেবল পরীক্ষা করেছেন


আসল উত্তর:

#include<windows.h>
main(){return GetProcAddress(GetModuleHandle("Kernel32"),"IsWow64Process")?64:32;}

নিশ্চিত হওয়ার জন্য আমাদের কেবল দুটি ক্ষেত্রে পার্থক্য করা দরকার

  • IsWow64Process কার্নেল 32.dll => তে বিদ্যমান নেই আমরা একটি 32 বিট মেশিনে আছি।

  • IsWow64Process উপস্থিত নেই => আমরা একটি 64 বিট মেশিনে আছি।

প্রকৃত মান সরবরাহ করেছেন IsWow64Processএই চ্যালেঞ্জের জন্য অপ্রাসঙ্গিক, যেহেতু আমরা চাই বাইনারি যে কোনও ক্ষেত্রে 32 বিট হয়।

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

যদি আমি একটি সংক্ষিপ্ত ফাংশন জানতাম যা কেবলমাত্র bit৪ বিট এবং 32 বিবিট মেশিনে উপস্থিত থাকে তবে আমি উত্তরটি সংক্ষিপ্ত করতে পারতাম।


2
.dllমডিউল নামের স্ট্রিং থেকে ড্রপ করুন । গল্ফিংয়ের জন্য এটি কেবল ভালই নয়, এটি স্বাভাবিক ব্যবহারের ক্ষেত্রেও একটি ভাল অনুশীলন। এছাড়াও, গল্ফিংয়ের উদ্দেশ্যে, আপনি পরে স্থানটি ফেলে দিতে পারেন #include
কোডি গ্রে

ধন্যবাদ, আমি কেবলমাত্র এমন একটি মডিউল সন্ধান করে পুরো জিনিসটি হ্রাস করতে চেয়েছিলাম যা 32 বিট নয় তবে 64 বিটে পাওয়া যাবে। আমি এখনও খুঁজছি। দুঃখের বিষয় (এই উদ্দেশ্যে) ওউডাব্লু 64 নামে কোনও মডিউল নেই।
মিঃপলচ

আসলে ক wow64.dll এবং আছে Wow64Win.dll, কিন্তু আমি কখনও তাদের সাথে ফোন করার চেষ্টা করিনি GetModuleHandle। সমস্যাটি হ'ল এগুলি কেবল একটি 32৪-বিট মেশিনে চলমান 32-বিট প্রক্রিয়াটির জন্য লোড করা হবে, 64-বিট মেশিনে চলমান 64-বিট প্রক্রিয়াটির জন্য নয়
কোডি গ্রে

আমার আছে. এমনকি তারা একটি 64 বিট মেশিনে 0 ফিরে আসে। আসলে জ্ঞান করে। এগুলির সরাসরি সংযুক্ত থাকার অস্তিত্ব নেই। সিস্টেম রানটাইমের সময় পুনঃনির্দেশের যত্ন নেয় of
মিঃপলচ

ওহ, সমস্যা যদিও। এসডিকে ডকুমেন্টেশন থেকে: "নোট করুন যে এই প্রযুক্তিটি অপারেটিং সিস্টেমটি উইন্ডোজের 64৪-বিট সংস্করণ কিনা তা সনাক্ত করার কোনও নির্ভরযোগ্য উপায় নয় কারণ 32-বিট উইন্ডোজের বর্তমান সংস্করণে কার্নেল 32.dll এও এই ফাংশনটি অন্তর্ভুক্ত করে।"
কোডি গ্রে

7

সি #, 60 50 বাইট

_=>System.Environment.Is64BitOperatingSystem?64:32

ধন্যবাদ @TheLethalCoder


1
সাইটে স্বাগতম! :)
ডিজেএমসিএমহেম

4
আপনি 'লাইন' সরিয়ে
জন

1
'পরিবেশ' অপসারণ করতে পারে। এবং 'কনসোল'। এর অনুমান using static System.Environment;এবংusing static System.Console;
জন

1
এছাড়াও, পরিবর্তন WriteLineকরার জন্যWrite
টমাস আইয়ুব

7
@ জন সর্বশেষে আমি যাচাই করেছিলাম, আমদানিগুলি অবশ্যই অন্তর্ভুক্ত করা উচিত এবং তাই বাইট গণনাতে যোগ করতে পারে
Cesion

6

রুবি, 22 বাইট

p [?a].pack(?p).size*8

["any string"].pack("p") একটি স্ট্রিং প্রদান করে যার বাইটস পয়েন্টারের সাথে সামঞ্জস্যপূর্ণ towards "any string" এবং ওএস -৪-বিট হলে 8 টি অক্ষর বা ওএস 32-বিট হলে 4 টি অক্ষর is


যেহেতু এটি পয়েন্টার আকারটি ব্যবহার করছে, এটি রুবি ইন্টারপ্রিটারটি যখন 64৪-বিট ওএস-তে একটি 32-বিট বাইনারি হয় তখন এটি 32-বিট প্রিন্ট করবে। সুতরাং একটি নিয়ম মিস করে।
ডার্কডাস্ট

1
@ ডার্কডাস্ট You can assume that users will use 64 bit software whenever possible.তাই 64৪ -বিট ব্যবহারকারীরা 64৪ -বিট রুবি চালাবেন বলে ধরে নেওয়া হবে।
মান কালি

6

আর, 16 বাইট

.Machine[[18]]*8

পয়েন্টারের আকার প্রদান করে।


1
সমস্ত পয়েন্টার-আকারের সমাধানগুলির মতো, প্রোগ্রামটি যখন একটি 32-বিট বাইনারি হয় 64৪-বিট ওএসে চলছে তখন এটি ভুল ফলাফলটি মুদ্রণ করবে।
ডার্কডাস্ট

1
@ ডার্কডাস্ট আর কে ব্যাখ্যা করা হয়েছে, এবং আমরা ধরে নিতে পারি যে ব্যবহারকারী যেখানে সম্ভব সেখানে -৪-বিট সফটওয়্যার ব্যবহার করে, তেমনি একটি -৪-বিট ইন্টারপ্রেটারও। আইএমএইচও, বিধিটি কেবল সংকলিত ভাষাগুলিতেই প্রযোজ্য
নিডজেজেকোব

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

6

পার্ল, 18 15 18 বাইট

say length pack p8

আমি 64␤আমার 32 বিট কম্পিউটারে উঠি কারণ perlএকটি 64 বিট চতুর্থ দিয়ে নির্মিত হয়েছিল। আপনি উইন্ডোজ 32 বিট সংস্করণে চলমান ক্ষেত্রে সাধারণত এটি দেখতে পাবেন।
ব্র্যাড গিলবার্ট

@ ব্র্যাডগিলবার্ট বিগিলস আমি কোডটি আগের সংস্করণে ফিরিয়ে দিয়েছি; এই এক এমনকি এই ক্ষেত্রে কাজ করা উচিত। এটি এখনও কাজ না করে তা আমাকে জানান, আমি আমার উত্তরটি মুছব।
গ্রিমি

1
এটি সঠিকভাবে কাজ করে।
ব্র্যাড গিলবার্ট

এইচপি 9000/785 এ ভুল বলে মনে হচ্ছে। দেয় 32. তবে আমি মনে করি না যে কোনও 32-বিট এইচপি / পিএ-আরআইএসসি সিপিইউ ছিল।
ওলে টাঞ্জ

6

x86 মেশিন কোড, 8 বাইট

31 C0 B0 40 48 24 60 C3

Ungolfed:

31 c0    xor eax,eax
b0 40    mov al, 0x40
48       dec al — in 32-bit mode; "REX.W" in 64-bit mode (ignored)
24 60    and al, 0x60
c3       ret

যদি একটি -৪-বিট এক্সিকিউটেবল হিসাবে সংকলিত হয় তবে এটি 64৪-এ ফিরে আসে eax হিসাবে সংকলিত হয় তবে , এবং যদি 32-বিট হিসাবে সংকলিত হয়, তবে 32 -কে ফিরিয়ে দেয় - ওএস নির্বিশেষে।

এই উত্তরটি বিধিগুলির উপরে নির্ভর করে:

আপনি ধরে নিতে পারেন যে ব্যবহারকারীরা যখনই সম্ভব সম্ভব bit৪ বিট সফটওয়্যার ব্যবহার করবেন।


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

@Jules আপনি ইনলাইন সমাবেশ যেমন লাগাতে পারেন একটি উচ্চ পর্যায়ের ভাষা প্রোগ্রামে মত এখানে । তারপরে আপনার ডিফল্ট বিকল্পগুলির সাথে আপনার প্ল্যাটফর্ম-নেটিভ সংকলকটি ব্যবহার করতে হবে এবং আপনি সাক্ষ্য পাবেন।
রুসলান

@ l4m2 আপনি আমার দিকে চিত্কার করছেন কেন? তবে আপনি যেভাবেই হোক না কেন, এই দুটি বাইটগুলি আমার পরীক্ষাগুলি থেকে কিছুটা আবর্জনা বলে মনে হচ্ছে। সরিয়ে ফেলবে।
Ruslan

5

পিএইচপি, 18 বাইট

<?=PHP_INT_SIZE*8;

এটি 32, 64 এবং অন্যান্য বিট সিপিইউগুলির সমস্ত ক্ষেত্রে সঠিকভাবে পরিচালনা করে যে প্রদত্ত যে পিএইচপিএনপিএসT_SIZE সঠিক, এটি সিপিইউর যথাযথ আকারটি দেখায় যে কোনও পিপিএইচ পিএইচপি চলছে কি না!

যদি পিএইচপি চালু থাকে

32-বিট ওএস পিএইচপিএনপিএস_সিজু == 4,

-৪-বিট ওএস পিএইচপিএনপিএস_সিজু == 8,

16-বিট ওএস পিএইচপিএনপিএস_এসআইজি == 2 (তাত্ত্বিকভাবে)

8-বিট ওএস পিএইচপিএনপিএস_সিজু == 1 (আবার তাত্ত্বিকভাবে)

128-বিট ওএস পিএইচপি.এন.পি.এস.এস.আই = = 16 (এখনও অর্জিত হয়নি তবে সম্ভব)


2
সেই ধ্রুবকের ওএসের আকার রয়েছে যেখানে পিএইচপি নির্মিত হয়েছিল, চালানো হচ্ছে না
আইনাসিও

2
@ আইনাসিও হ্যাঁ, তবে প্রাথমিক চ্যালেঞ্জটিতে পোস্টারটি লিখেছিল "আপনি ধরে নিতে পারেন যে ব্যবহারকারীরা যখনই সম্ভব সম্ভব 64৪ বিট সফটওয়্যার ব্যবহার করবেন", সুতরাং ওএস যদি 64৪-বিট হয় তবে ওএসে চলমান পিএইচপি এর সংস্করণ ধরে নেওয়া উচিত 64 বিট হতে! (দ্রষ্টব্য: আমি এটিকে প্রাথমিক চ্যালেঞ্জের ভিত্তিতে একটি খাঁটি যুক্তি হিসাবে দেখছি না))
বাজে

4

সি # (29 বাইট)

Console.Write(IntPtr.Size*8);

10
সমস্ত পয়েন্টার-আকারের সমাধানগুলির মতো, প্রোগ্রামটি যখন একটি 32-বিট বাইনারি হয় 64৪-বিট ওএসে চলছে তখন এটি ভুল ফলাফলটি মুদ্রণ করবে।
ডার্কডাস্ট

1
এটি নির্দিষ্ট করতে হবে যে এটি "যেকোনো সিপিইউ" এর জন্য "32-বিট পছন্দ" চেকবাক্সটি চেক না করে সঙ্কলিত।
কোডি ধূসর

4

শক্তির উৎস, 17 52 বাইট

try{32+32*((gci \*`))-or(arch)[-1]-eq52)}catch{32}

নিম্নলিখিতগুলির কোনওটি সত্য হলে 64 প্রদান করে:

  • আপনার বর্তমান ড্রাইভে একটি ফাইলের নাম সহ একটি বন্ধুত্বের পেরিনে শেষ হবে, এটি ধারণাটি সনাক্ত করা হচ্ছে Program Files (x86)
  • archএকটি স্ট্রিং বিভক্তি ফেরৎ 4(হওয়া ASCII 52), মত x86_64, যেমন যেমন উল্টোদিকে i686

চেষ্টা করা হ'ল জিসিআই যদি কিছু না ফেরায় এবং আপনার কোনও খিলান না পেয়ে থাকে তবে আপনি যে ত্রুটি পেয়েছেন তা এড়াতে চেষ্টা করুন । আমি এখন পর্যন্ত এটি করার কোনও ছোট উপায় খুঁজে পাইনি। gci টি ls এর উপরে ব্যবহার করা হয় কারণ লিনাক্সে, ls একটি দৃশ্যমান ত্রুটি তৈরি করবে।

এই সংস্করণটি সনাক্ত করতে হবে যে ওএস কেবল পাওয়ারশেলের চেয়ে 64-বিট কিনা এবং উইন্ডোজ এবং লিনাক্সে কাজ করার জন্য পরীক্ষা করা হয়। ম্যাক সমর্থনের জন্য প্রতিস্থাপন archসঙ্গে uname -m

পূর্ববর্তী উইন্ডোজ-শুধুমাত্র সংস্করণ: -!(ls \*`))*32+64


এটি কোন লিনাক্স ডিস্ট্রোতে চলে?
tuskiomi

@ তাসকোমি ওহ, আমার খারাপ - আমি আপনাকে বোঝাতে চাইছি। চ্যালেঞ্জটি সঠিকভাবে পড়েনি। আমি উত্তর মুছে ফেলা উচিত?
অ্যান্ডি সি

আপনি যদি জানেন যে এটি WINE এর সাথে কাজ করবে, আপনার এটি রাখা উচিত।
tuskiomi

@ টুস্কিওমি খুব কমপক্ষে উবুন্টু 14.04, 16.04, আরএইচইল 7, সেন্টোস 7 এবং স্যুসের কিছু সংস্করণ: গিথুব.com
পাওয়ারশেল

4

সুইফট 4 আরপিএল / খেলার মাঠ, 12 বাইট

Int.bitWidth

Intশব্দের আকার হ'ল, সিস্টেমের উপর নির্ভর করে Int32বা হয় Int64


এটি কি কোড-স্নিপ নয়, তাই এটি প্রিন্ট করা উচিত? বা আপনি কি আরইপিএল ব্যবহার করছেন তা এই নিষেধাজ্ঞার আশেপাশে রয়েছে?
লিন্ডন হোয়াইট

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

4

রুবি, 10 বাইট

p 0.size*8

যদিও রুবি যেকোন দৈর্ঘ্যের পূর্ণসংখ্যার ব্যবহার করতে পারে, অভ্যন্তরীণভাবে এটি মেশিনের শব্দের মতো মানগুলি সংরক্ষণ করে Fixnum। পদ্ধতিটি Fixnum#sizeসর্বদা একটি মেশিন শব্দের বাইটে দৈর্ঘ্য ফিরিয়ে দেয়।

Fixnumবর্গ রুবি 2.4.0 সরানো হয়েছিল, তার কার্যকারিতা ক্লাসে অন্তর্ভুক্ত করা হয় Integer। কোড দাঁড়িয়ে।


4

শেল, 26 বাইট

uname -m|awk \$0=/_/?64:32

আপনি archপরিবর্তে ব্যবহার করতে পারেন uname -m
ডেনিস

1
@ ডেনিস অগত্যা নয়। ম্যাকোসে: uname -m-> x86_64, তবে arch-> i386। কারণ ম্যাকোস :( এছাড়াও, এটি বাশ-নির্দিষ্ট - zsh এ ব্যর্থ
ভাইরাপটর

@ স্টিভেনপেনি বিশ্বব্যাপী / একক চরিত্রের ওয়াইল্ডকার্ড হিসাবে zshব্যাখ্যা করার চেষ্টা করবে ?
ডোরকনবব

এটি কি উইন্ডোজে চলে?
আজাসজা

1
সাইগউইনের সাথে @ আজাসজা
স্টিভেন পেনি


4

সি, 22 বাইট

f(){return(int**)0+8;}

এটি একটি পয়েন্টার-আকার ভিত্তিক উত্তর যা একটি নেটিভ বাইনারি ধরে নেয়। 0কাস্ট করা হয় int**(ঠিকানা 0x0)। তারপরে আমরা 8 থেকে 0 যুক্ত করব, যা সি অগ্রিমায়, পয়েন্টারটি দ্বারা sizeof(int*)*8। 4 বাইট * 8 বিট = 32, 8 বাইট * 8 বিট = 64. সুতরাং আমরা পেয়েছি (int**)0x20এবং0x40 যা পরোক্ষভাবে একটি সুস্পষ্টভাবে- intপুনর্নির্মাণ ফাংশন থেকে ফিরে এসে পূর্ণসংখ্যার হিসাবে কাস্ট করা হয় ।

সি, একা একা, 34 বাইট

main(){printf("%d\n",(int**)0+8);} 

সি, ইউনিকোডের সাথে মজা, 30 কোড-পয়েন্ট, 34 বাইট (ইউটিএফ -8)

main(){puts((int**)U" ㈳㐶"+1);}

আমি কীভাবে এটি কাজ করে তা বোঝার চেষ্টা করেছি তবে আমি নির্দোষ। আপনি একটি ব্যাখ্যা যোগ করতে পারেন?
নিডিজেককব

@jbcreix চতুর ...
NieDzejkob

3

জাভা, 50 বাইট

int b(){return com.sun.jna.Native.POINTER_SIZE*8;}


এটা কি গ্রন্থাগার? যদি হ্যাঁ, আপনি এটি উল্লেখ করা উচিত! ওরাকলের জেডিকে 8 তে আমি যে শ্রেণিটি উপলব্ধ তা দেখতে পাচ্ছি না (যদিও আমার সাধারণ জেডিকে 6 এবং 7 আমার কাছে নেই, এটিএম)।
অলিভিয়ার গ্রাগোয়ার

2
এই উত্তরটি অবৈধ। এটি মুদ্রণ করে না।
ফিলিপ

6
ডেনিসের উদ্ধৃতি:> এটি আরও বলেছে যে স্বাভাবিক কোড গল্ফের নিয়মগুলি প্রয়োগ হয় এবং কোনও ফাংশন থেকে ফিরে আসা I / O এর জন্য আমাদের খেলাপিগুলির একটি অংশ।
আসু

কম বাইটের জন্য এটি একটি ()->com.sun.jna.Native.POINTER_SIZE*8
ল্যাম্বা

3

পিএইচপি, 29 বাইট

<?=@php_uname(m)[-1]-4?32:64;

https://3v4l.org/Y6JXv


বিস্ময়। আমার এটা ভাল লেগেছে. এটা কিভাবে কাজ করে?
tuskiomi

4
php_uname('m')x86_64একটি 64 বিট ওএস এ ফিরে আসে , অন্যথায় কিছু i3864স্ট্রিংয়ের ষষ্ঠ অক্ষর (5 তম 0 সূচকযুক্ত) হওয়া '4' - 4 == 0 == false,। এবং @কেবল অনাবৃত স্ট্রিং, এবং অবিশ্রুত অফসেটের জন্য সতর্কতাগুলি দমন করে।
পেটাঃ

2
এটি ওএস নয়, পিএইচপি এর আর্কিটেকচার সনাক্ত করে। আমি একটি 64-বিট উইন্ডোয় 32-বিট পিএইচপি চালাচ্ছি, php_uname('m')ফিরে আসবে 'i586'
গ্রাস ডাবল

@ গ্রাসডুবেল ভালভাবে অনুমান করি ymmv, আমি আমার সাথে কাজ করি Windows NT USER-PC 10.0 build 15063 (Windows 10) AMD64
পেটাঃ

1
@ টসকিওমি এটিতে 8-বিট অপারেটিং সিস্টেম থাকলে 64 টি মুদ্রণ করবে
বাজে

3

পাইথন 3 , 77 84 71 59 বাইট

-13 বাইটস, @ জোনাথন অ্যালানকে ধন্যবাদ!
@ ক্লিয়ার দ্বারা নীচে 59 এ

from platform import*;print({'4':64,'6':32}[machine()[-1]])

এটি অনলাইন চেষ্টা করুন!

আমার মুঠির সময় কোড-গল্ফ :)
মুঠির bit৪ বিট-ওএসে 32 বিট-পাইথন চলাকালীনও সঠিক সংস্করণটি আউটপুট করা উচিত।
ধরে নেওয়া যাক platform.machine()দেয় i*86বা x8632bit-OS এর জন্য। এটি যাচাই করার জন্য আমার কাছে একটিও উপলব্ধ নেই। 0ওএস যখন 64/32 বিট এ থাকে না তখন আউটপুট হয়
: সম্পাদনা: মুদ্রণ বিবৃতি যুক্ত করা হয়েছে, সুতরাং এটি 7 বাইট লম্বা হয়েছে


এটি গ্রহণযোগ্য কিনা তা নিশ্চিত নয় কারণ bit৪ বিট মেশিনে 32 বিট ওএস চালানো সম্ভব (বা এমন কোনও মেশিনকে বলা foo86হয় যা 64 বিট: পি) বলা যায় তবে এটি যদি গ্রহণযোগ্য হয় তবে আপনি 9 টি সংরক্ষণ করতে পারেন (সম্পাদনা .. .13!) বাইট সহ print((a==64)*a+32*(a==86))
জোনাথন অ্যালান

from platform import*;print({'4':64,'6':32}[machine()[-1]])খুব কাজ করবে।
ক্লিয়ারার

@ ক্লিয়ারার এটি নিম্নলিখিত সীমাবদ্ধতাগুলি মিস করবে: গুরুত্বপূর্ণ: আলফানিউমেরিক অক্ষরের অন্য কোনও খালি খালি স্ট্রিংটি যদি এটি 32 বা 64 বিট না হয় তা মুদ্রণ করুন।
tommtt

@tommtE যদি এটি 32 বা 64 বিট না হয় তবে এটি একটি ব্যতিক্রম ছুঁড়ে ফেলবে, যা খালি খালি স্ট্রিং প্রিন্ট করে।
ক্লিয়ারার

2
আর্কিটেকচার চেষ্টা করুন (), from platform import*;print(architecture()[0][:2])
ডিকটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.