LeeCode 405 數字轉換為十六進製制數

2021-10-03 19:35:07 字數 1587 閱讀 8928

package leecode;

/** * @classname tohex

* @description 給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用 補碼運算 方法。

* 注意:

* 十六進製制中所有字母(a-f)都必須是小寫。

* 十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元'0'來表示;對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。

* 給定的數確保在32位有符號整數範圍內。

* 不能使用任何由庫提供的將數字直接轉換或格式化為十六進製制的方法。

* @author kingsley

* @date 2020/3/12 15:57

* @version 1.0

**/public

class

tohex

; stringbuilder sb =

newstringbuilder()

;while

(num !=0)

return sb.

tostring()

;}//正負數都要可以的演算法,0xf 0x代表這是16進製制的數,f代表15,所以0xf就是15

public

static string tohexdemo

(int num)

; stringbuilder sb =

newstringbuilder()

;int tmp =0;

while

(num !=0)

return sb.

tostring()

;}public

static

void

main

(string[

] args)

}

**即解釋,記錄一番關於位運算以及補碼,有符號數的概念

1.正數的補碼是它本身

2.負數的補碼是正數的補碼+1;且最高位為1

3.>>>運算子是無符號右移,高位均補0。

補碼:正數

正整數的補碼是其二進位制表示,與原碼相同 [3] 。

例:+9的補碼是00001001。(備註:這個+9的補碼是用8位2進製來表示的,補碼表示方式很多,還有16位二進位制補碼表示形式,以及32位二進位制補碼表示形式,64位進製補碼表示形式等。每一種補碼表示形式都只能表示有限的數字。)

負數求負整數的補碼,將其原碼除符號位外的所有位取反(0變1,1變0,符號位為1不變)後加1 [4] 。

同乙個數字在不同的補碼表示形式中是不同的。比如-15的補碼,在8位二進位制中是11110001,然而在16位二進位制補碼表示中,就是1111111111110001。以下都使用8位2進製來表示。

例:求-5的補碼。

-5對應正數5(00000101)→所有位取反(11111010)→加1(11111011)

所以-5的補碼是11111011。

0的補碼

數0的補碼表示是唯一的 [3] 。

[+0]補=[+0]反=[+0]原=00000000

[ -0]補=11111111+1=00000000

LeetCode 405 數字轉換為十六進製制數

給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用 補碼運算 方法。注意 十六進製制中所有字母 a f 都必須是小寫。十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元 0 來表示 對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。給定的數...

LeetCode 405 數字轉換為十六進製制數

給定乙個整數,編寫乙個演算法將這個數轉換為十六進製制數。對於負整數,我們通常使用 補碼運算 方法。注意 十六進製制中所有字母 a f 都必須是小寫。十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元 0 來表示 對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。給定的數...

LeetCode刷題之405 數字轉換為十六進製制數

我不知道將去向何方,但我已在路上!十六進製制中所有字母 a f 都必須是小寫。十六進製制字串中不能包含多餘的前導零。如果要轉化的數為0,那麼以單個字元 0 來表示 對於其他情況,十六進製制字串中的第乙個字元將不會是0字元。給定的數確保在32位有符號整數範圍內。不能使用任何由庫提供的將數字直接轉換或格...