ஒரு எண்ணை ஹெக்ஸாடெசிமல் லீட்கோட் தீர்வுக்கு மாற்றவும்


சிரமம் நிலை எளிதாக
அடிக்கடி கேட்கப்படுகிறது பேஸ்புக் மைக்ரோசாப்ட்
பிட் கையாளுதல்

ஒரு எண்ணை ஹெக்ஸாடெசிமல் லீட்கோட் தீர்வுக்கு மாற்றுவதில் சிக்கல் எங்களுக்கு ஒரு முழு எண்ணை வழங்குகிறது. பின்னர் கொடுக்கப்பட்டதை மாற்றும்படி கேட்கிறது முழு தசம எண் அமைப்பில் ஹெக்ஸாடெசிமல் எண் அமைப்புக்கு. இன்னும் முறையாக, அடிப்படை 10 இல் கொடுக்கப்பட்ட ஒரு முழு எண்ணை அடிப்படை 16 பிரதிநிதித்துவமாக மாற்ற கேள்வி தேவைப்படுகிறது. தசம எண் அமைப்பில் எங்களுக்கு ஒரு எண் வழங்கப்பட்ட ஒரு சிக்கலை நாங்கள் ஏற்கனவே தீர்த்தோம். மேலும் அதை அடிப்படை 7 ஆக மாற்ற வேண்டியிருந்தது. எனவே, மேலும் முன்னேறுவதற்கு முன், சில எடுத்துக்காட்டுகளைப் பார்ப்போம்.

உதாரணமாக

26
1a

ஒரு எண்ணை ஹெக்ஸாடெசிமல் லீட்கோட் தீர்வுக்கு மாற்றவும்

விளக்கம்: ஹெக்ஸாடெசிமல் எண் முறையைப் பற்றி தெரிந்து கொண்டால் இந்த மாற்றம் எளிதானது. ஆனால் உங்களுக்கு இது தெரியாவிட்டால், கொடுக்கப்பட்ட எண்ணை அடிப்படை 16 பிரதிநிதித்துவமாக மாற்றவும். மீண்டும் மீண்டும் பிரிவு மற்றும் மீதமுள்ளவற்றை சேமிப்பதன் மூலம் நாங்கள் அதை செய்கிறோம். கவனிக்க வேண்டிய ஒரு விஷயம், 10 என்பது அறுபதின்ம குறியீட்டில் 'a' ஐப் பயன்படுத்தி குறிப்பிடப்படுகிறது.

-1
ffffffff

விளக்கம்: எதிர்மறை எண்கள் அவற்றின் 2 இன் நிரப்பு குறியீடாக சேமிக்கப்படுவதால். அதன் 1 வி நிரப்பு குறியீட்டில் -2 என்பது 11111111111111111111111111111111 ஆகும். எனவே, இதை வெளியீட்டில் காட்டப்பட்டுள்ள ஹெக்ஸாடெசிமலாக மாற்றுவோம்.

ஒரு எண்ணை ஹெக்ஸாடெசிமல் லீட்கோட் தீர்வுக்கு மாற்றுவதற்கான அணுகுமுறை

சிக்கலில் ஆழமாக டைவ் செய்வதற்கு முன் ஒரு எண்ணை ஹெக்ஸாடெசிமல் லீட்கோட் தீர்வுக்கு மாற்றவும். முதலில் ஹெக்ஸாடெசிமல் எண் அமைப்புடன் நம்மைப் பழக்கப்படுத்திக்கொள்ளலாம். எனவே, ஹெக்ஸாடெசிமல் எண் முறையும் தசம எண் அமைப்பு போன்றது, ஆனால் 10 முதல் 15 எண்கள் 'a' முதல் 'f' வரையிலான சிறிய எழுத்துக்களைப் பயன்படுத்தி குறிப்பிடப்படுகின்றன. எனவே, ஒரு தசம எண் அமைப்பில் ஒரு முழு எண்ணை அடிப்படை 16 பிரதிநிதித்துவமாக மாற்றலாம். மாற்றத்திற்குப் பிறகு, 10 - 15 எண்களை a - f உடன் மாற்றுவோம். ஆனால் என்ன, எதிர்மறை எண்களைக் கொண்டு நாம் என்ன செய்கிறோம்? எதிர்மறை எண்கள் பைனரி அமைப்பில் 2s பூர்த்தி குறியீட்டில் சேமிக்கப்படுவதால். கையொப்பமிடாத எண்ணில் எண்ணை சேமித்து, அதை அடிப்படை 16 ஆக மாற்றுகிறோம்.

ஜாவா மொழியில் உள்ள குறியீடும் அதையே செய்கிறது, ஆனால் பிட் கையாளுதலைப் பயன்படுத்தி சற்று வித்தியாசமாக செயல்படுத்தப்படுகிறது. எனவே, முதலில் நாம் கொடுக்கப்பட்ட எண்ணை 15 உடன் எடுத்துக்கொள்கிறோம். இந்த செயல்பாடு 16 உடன் மோட் எடுப்பதற்கு சமம். பின்னர் இடது ஷிப்டைப் பயன்படுத்துவது 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

ஒரு எண்ணை ஹெக்ஸாடெசிமல் லீட்கோட் தீர்வுக்கு மாற்ற ஜாவா குறியீடு

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

சிக்கலான பகுப்பாய்வு

நேர சிக்கலானது

O (M (n) log n), இங்கு n என்பது கொடுக்கப்பட்ட உள்ளீட்டின் நீளம், M (n) என்பது இரண்டு 2-பிட் எண்களைப் பிரிக்க எடுக்கும் நேரம். எனவே, நேர சிக்கலானது மடக்கை ஆகும்.

விண்வெளி சிக்கலானது

ஓ (1), எண்ணில் ஒவ்வொரு இலக்கத்தைப் பற்றிய எந்த தரவையும் நாங்கள் சேமிக்கவில்லை என்பதால். விண்வெளி சிக்கலானது நிலையானது.