Конвертирајте број во решение на хексадецимален лек код


Ниво на тешкотија Лесно
Често прашувано во Facebook Мајкрософт
Манипулација со малку

Проблемот Претвори број во решение на хексадецимален лек код ни обезбедува цел број. Потоа бара од нас да го претвориме даденото број во систем на децимални броеви до хексадецимален броен систем. Поформално, прашањето бара од нас да претвориме цел број даден во база 10 во база 16 претстава. Ние веќе решивме проблем каде ни беше даден број во системот на децимални броеви. И мораше да го претвориме во база 7. Значи, пред да продолжиме понатаму, да погледнеме неколку примери.

пример

26
1a

Конвертирајте број во решение на хексадецимален лек код

Објаснување: Оваа конверзија е лесна, ако случајно знаете за системот на хексадецимален број. Но, ако не сте свесни за тоа, само претворете го дадениот број во репрезентација на основата 16. Ние го правиме тоа со повторлива поделба и чување на остатокот. Едно е да се напомене дека, 10 е претставен со употреба на „а“ во хексадецимална нотација.

-1
ffffffff

Објаснување: Бидејќи негативните броеви се зачувуваат како комплементација на нивните 2. -1 во својата 2-та нотација на комплементот е 11111111111111111111111111111111. Значи, ние само го претвораме ова во хексадецимално, што е прикажано на излезот.

Пристап за претворање на број во хексадецимално решение за леткод

Пред да се нурнете длабоко во проблемот Конвертирајте број во решение на хексадецимален лек код. Ајде прво да се запознаеме со системот на хексадецимален број. Значи, хексадецималниот систем на броеви е исто како и системот на децимални броеви, но броевите од 10 до 15 се претставени со употреба на мали букви од 'a' до 'f'. Значи, можеме едноставно да претвориме цел број во систем на децимални броеви во репрезентација на база 16. И по конверзијата, ние едноставно ги заменуваме броевите 10 - 15 со a - f. Но, што, правиме со негативни броеви? Бидејќи негативните броеви се чуваат во номинацијата на комплементите 2s во бинарниот систем. Ние едноставно го зачувуваме бројот во непотпишан int и само го претвораме во основа 16.

Кодот на јазик Јава исто така ја извршува истата работа, но се спроведува на малку поинаков начин со користење на бит-манипулација. Значи, прво земаме & од дадениот број со 15. Оваа операција е еквивалентна на земање мод со 16. Потоа користењето на левата смена е еквивалентно на поделбата со користење на 16.

Код

C ++ код за конвертирање на број во решение на хексадецимален лек код

#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

Java код за конвертирање на број во хексадецимално решение за лет код

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), бидејќи не сме зачувале никакви податоци во врска со секоја цифра во бројот. Комплексноста на просторот е постојана.