পাইথনে আপনি কীভাবে বাইনারি আক্ষরিক প্রকাশ করেন?


351

পাইথন আক্ষরিক সাথে আপনি বাইনারি সংখ্যা হিসাবে কোনও পূর্ণসংখ্যা কীভাবে প্রকাশ করবেন?

আমি সহজেই হেক্সের উত্তর খুঁজে পেতে সক্ষম হয়েছি:

>>> 0x12AF
4783
>>> 0x100
256

এবং অষ্টক:

>>> 01267
695
>>> 0100
64

পাইথনে বাইনারি প্রকাশ করতে আপনি কীভাবে আক্ষরিক ব্যবহার করবেন?


উত্তরগুলির সংক্ষিপ্তসার

  • পাইথন 2.5 এবং পূর্ববর্তী: বাইনারি ব্যবহার করে প্রকাশ করতে পারে int('01010101111',2)তবে আক্ষরিক সাথে নয়।
  • পাইথন 2.5 এবং এর আগের: বাইনারি আক্ষরিক প্রকাশ করার কোনও উপায় নেই
  • পাইথন ২.6 বিটা: আপনি এটি পছন্দ করতে পারেন: 0b1100111বা 0B1100111
  • পাইথন ২.6 বিটা: এছাড়াও একটি অষ্টাল উপস্থাপন করতে 0o27বা 0O27(দ্বিতীয় অক্ষরটি হ'ল হে))
  • পাইথন 0273.0.০ বিটা: ২.6 হিসাবে একই, তবে আর অষ্টালের জন্য পুরানো বাক্য গঠনকে আর অনুমতি দেবে না ।

উত্তর:


291

Reference- জন্য ভবিষ্যতে পাইথন সম্ভাবনার:
পাইথন 2.6 থেকে শুরু করে আপনি প্রিফিক্স ব্যবহার বাইনারি লিটারেল প্রকাশ করতে পারেন 0b বা 0B :

>>> 0b101111
47

আপনি কোনও সংখ্যার বাইনারি উপস্থাপনা পেতে নতুন বিন ফাংশনটি ব্যবহার করতে পারেন :

>>> bin(173)
'0b10101101'

ডকুমেন্টেশনের বিকাশ সংস্করণ: পাইথন ২.6-এ নতুন


72
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255

অন্য উপায়.


2
আপনার যখন স্ট্রিং থাকে এটি আকর্ষণীয় তবে খাঁটি সংখ্যার সাথে কাজ করাতে আপনি কোডে অপ্রয়োজনীয় গণনা যুক্ত করেন।
ড্যানিয়েল মুলার

28

পাইথনে আপনি কীভাবে বাইনারি আক্ষরিক প্রকাশ করেন?

এগুলি "বাইনারি" আক্ষরিক নয়, বরং "পূর্ণসংখ্যার অক্ষর"। আপনি একটি বাইনারি ফর্ম্যাট সহ পূর্ণসংখ্যার আক্ষরিকাগুলি প্রকাশ করতে পারেন যার 0পরে একটি হয় Bবা bএকটি সিরিজ শূন্য এবং এর দ্বারা অনুসরণ করা হয়, উদাহরণস্বরূপ:

>>> 0b0010101010
170
>>> 0B010101
21

পাইথন 3 ডক্স থেকে, পাইথনে পূর্ণসংখ্যা অক্ষর সরবরাহ করার উপায়গুলি:

পূর্ণসংখ্যার আক্ষরিক নীচের বর্ণনামূলক সংজ্ঞা দ্বারা বর্ণিত হয়:

integer      ::=  decinteger | bininteger | octinteger | hexinteger
decinteger   ::=  nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger   ::=  "0" ("b" | "B") (["_"] bindigit)+
octinteger   ::=  "0" ("o" | "O") (["_"] octdigit)+
hexinteger   ::=  "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::=  "1"..."9"
digit        ::=  "0"..."9"
bindigit     ::=  "0" | "1"
octdigit     ::=  "0"..."7"
hexdigit     ::=  digit | "a"..."f" | "A"..."F"

উপলব্ধ স্মৃতিতে কী সংরক্ষণ করা যায় তা বাদ দিয়ে পূর্ণসংখ্যার আক্ষরিক দৈর্ঘ্যের কোনও সীমা নেই is

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

পূর্ণসংখ্যার আক্ষরিক উদাহরণ:

7     2147483647                        0o177    0b100110111
3     79228162514264337593543950336     0o377    0xdeadbeef
      100_000_000_000                   0b_1110_0101

সংস্করণ ৩.6 এ পরিবর্তিত হয়েছে: আন্ডারসোরগুলি এখন আক্ষরিক ক্ষেত্রে গোষ্ঠীকরণের জন্য অনুমোদিত।

বাইনারি প্রকাশের অন্যান্য উপায়:

আপনার কাছে একটি স্ট্রিং অবজেক্টে জিরো এবং সেগুলি থাকতে পারে যা ম্যানিপুলেট করা যায় (যদিও আপনাকে সম্ভবত বেশিরভাগ ক্ষেত্রে পূর্ণসংখ্যার উপর বিটওয়াইজ অপারেশন করা উচিত) - কেবল শূন্যগুলি এবং স্ট্রিংয়ের স্ট্রিংটি পাস করুন এবং আপনি যে ভিত্তিটি রূপান্তর করছেন (2) ):

>>> int('010101', 2)
21

আপনার কাছে বিকল্প 0bবা 0Bউপসর্গ থাকতে পারে:

>>> int('0b0010101010', 2)
170

আপনি যদি এটি 0বেস হিসাবে পাস করেন তবে স্ট্রিংটি একটি উপসর্গের সাথে নির্দিষ্ট না করা থাকলে এটি বেস 10 গ্রহণ করবে:

>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21

পূর্ববর্তী থেকে মানব পাঠযোগ্য বাইনারি রূপান্তর করা:

বাইনারি আক্ষরিকের স্ট্রিং প্রতিনিধিত্ব দেখতে আপনি বিনের সাথে একটি পূর্ণসংখ্যা পাস করতে পারেন:

>>> bin(21)
'0b10101'

আর তুমি একত্রিত করতে পারেন binএবং intআগে পিছে যেতে:

>>> bin(int('010101', 2))
'0b10101'

আপনি পূর্ববর্তী জিরোগুলির সাথে ন্যূনতম প্রস্থ রাখতে চান তবে আপনি একটি ফর্ম্যাট স্পেসিফিকেশনও ব্যবহার করতে পারেন:

>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'

2

এখানে শুরুতে 0 নির্দিষ্ট করে যে বেসটি 8 (10 নয়), যা দেখতে খুব সহজ:

>>> int('010101', 0)
4161

আপনি যদি 0 দিয়ে শুরু না করেন, তবে অজগরটি সংখ্যাটি বেস 10 বলে ধরে নিবে।

>>> int('10101', 0)
10101

-1

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


-3

আমি নিশ্চিত যে হেক্স () এবং অক্ট () এর সাথে যেতে বিন () এর সাথে পাইথন 3.0.০ এ পরিবর্তনের কারণে এটি অন্যতম জিনিস।

সম্পাদনা: ল্যাব্র্যান্ডির উত্তর সব ক্ষেত্রেই সঠিক।

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