একটি নম্বরকে হেক্সাডেসিমাল লেটকোড সমাধানে রূপান্তর করুন


কাঠিন্য মাত্রা সহজ
প্রায়শই জিজ্ঞাসা করা হয় ফেসবুক মাইক্রোসফট
বিট ম্যানিপুলেশন

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

উদাহরণ

26
1a

একটি নম্বরকে হেক্সাডেসিমাল লেটকোড সমাধানে রূপান্তর করুন

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

-1
ffffffff

ব্যাখ্যা: যেহেতু নেতিবাচক সংখ্যাগুলি তাদের 2 এর পরিপূরক স্বরলিপি হিসাবে সংরক্ষণ করা হয়। এর 1s পরিপূরক স্বরলিপি -2 হ'ল 11111111111111111111111111111111. সুতরাং, আমরা কেবল এটিকে হেক্সাডেসিমাল রূপান্তর করি যা আউটপুটে প্রদর্শিত হয়।

হেক্সাডেসিমাল লেটকোড সলিউশনে সংখ্যার রূপান্তর করার পদ্ধতির

সমস্যার গভীরে ডুব দেওয়ার আগে একটি নম্বরকে হেক্সাডেসিমাল লেটকোড সমাধানে রূপান্তর করুন। প্রথমে হেক্সাডেসিমাল নম্বর সিস্টেমের সাথে নিজেকে পরিচিত করি। সুতরাং, হেক্সাডেসিমাল সংখ্যা সিস্টেমটিও দশমিক সংখ্যা পদ্ধতির মতো তবে 10 থেকে 15 সংখ্যাটি 'এ' থেকে 'এফ' থেকে লোয়ার-কেস বর্ণমালা ব্যবহার করে প্রতিনিধিত্ব করা হয়। সুতরাং, আমরা কেবলমাত্র দশমিক সংখ্যা সিস্টেমের একটি পূর্ণসংখ্যাকে বেস 16 টি উপস্থাপনায় রূপান্তর করতে পারি। এবং রূপান্তরকরণের পরে, আমরা কেবল 10 - 15 সংখ্যার সাথে একটি - এফ দিয়ে প্রতিস্থাপন করি। তবে কী, আমরা নেতিবাচক সংখ্যা দিয়ে করব? যেহেতু নেতিবাচক সংখ্যাগুলি বাইনারি সিস্টেমে 2s পরিপূরক স্বরলিপিতে সংরক্ষণ করা হয়। আমরা কেবল একটি স্বাক্ষরবিহীন int এ নম্বরটি সংরক্ষণ করি এবং এটি কেবল বেস 16 এ রূপান্তর করি।

জাভা ভাষার কোডও একই জিনিস সম্পাদন করে তবে বিট ম্যানিপুলেশন ব্যবহার করে কিছুটা ভিন্ন পদ্ধতিতে প্রয়োগ করা হয়। সুতরাং, প্রথমে আমরা এবং 15 দিয়ে দেওয়া নম্বরটি গ্রহণ করি This এই অপারেশনটি 16 এর সাথে মোড নেওয়ার সমতুল্য Then তারপরে বাম শিফটটি 16 ব্যবহার করে বিভাগের সমান।

কোড

এক নম্বরকে হেক্সাডেসিমাল লেটকোড সমাধানে রূপান্তর করতে সি ++ কোড

#include <bits/stdc++.h>
using namespace std;

const string decToHex = "0123456789abcdef";

string toHex(int n){
    if(n==0)
        return "0";
    unsigned int num = n;
    string ans = "";
    while(num > 0){
        ans = decToHex[num%16] + ans;
        num /= 16;
    }
    return ans;
}

int main(){
    cout<<toHex(26);
}
1a

জাভা কোড একটি নম্বরকে হেক্সাডেসিমাল লেটকোড সমাধানে রূপান্তর করতে vert

import java.util.*;
import java.lang.*;
import java.io.*;

class Solution
{
  public static String toHex(int n) {
        String decToHex = "0123456789abcdef";
        if(n==0)
            return "0";
        int num = n;
        String ans = "";
        while(num != 0){
            ans = decToHex.charAt(num&15) + ans;
            num = num >>> 4;
        }
        return ans;
    }
    
  public static void main (String[] args) throws java.lang.Exception
  {
    System.out.print(toHex(-1));
  }
}
ffffffff

জটিলতা বিশ্লেষণ

সময় জটিলতা

ও (এম (এন) লগ এন), যেখানে এন প্রদত্ত ইনপুটটির দৈর্ঘ্য, এম (এন) সময় হয় এটি 2 XNUMX-বিট সংখ্যাকে ভাগ করতে সময় নেয়। সুতরাং, সময়ের জটিলতা হ'ল লগারিদমিক।

স্পেস জটিলতা ity

ও (1), যেহেতু আমরা সংখ্যায় প্রতিটি অঙ্ক সম্পর্কিত কোনও তথ্য সংরক্ষণ করি নি। স্থান জটিলতা ধ্রুবক।