大數進製轉化 通過位移

2021-08-29 04:45:12 字數 723 閱讀 1234

僅突出運算,資料長度可根據需要擴充套件

在運算環境不支援long long時編寫

//****************************************

//== 函 數 名:bcd2hex

//== 功   能 :六個位元組的壓縮bcd碼轉換成十六進製制

//== 說   明 :適用於linux以及微控制器,vs環境待測試

//== 引數:bcd[6]:待轉換資料;hexa[8]:十六進製制

//****************************************=

int bcd2hexa( unsigned char bcd[6], unsigned char hexa[8])

;     

unsigned char result[9] ;

unsigned char tmp;

int i ;

//將bcd碼轉成十進位制數存放在陣列中

for ( i = 0 ; i < 6; i ++ )

//位移 相當於取餘運算。例如: 27%16 == 11  ——  27 & 0xf    

for( i = 0 ; i < 3 ; i ++ )

//位元組序倒置

for (i = 0; i < 4; i++)

memcpy(hexa,result,8);//結果是低位在前的順序陣列

return 0;

}

大數問題之26進製轉化

problem description xyz 26進製數是乙個每位都是大寫字母的數字。a b c x y z 分別依次代表乙個0 25 的數字,乙個 n 位的26進製數轉化成是10進製的規則如下 a0a1a2a3 an 1 的每一位代表的數字為a0a1a2a3 an 1 則該xyz 26進製數的1...

通過位運算實現數值交換

對於數值的交換操作,通常會採用第三個變數作為中間變數過渡的交換方式。temp a a b b temp 使用這種方法,可以保證交換的準確性,但是由於會使用第三個變數,占用了額外的記憶體空間。那麼有沒有辦法不借助第三個變數實現兩個數值的交換呢?可以通過數值相加寄存和位運算兩種方式。1 相加寄存 可以將...

php mysql通過位運算操作推薦位

position 字段設定為tinyint 假定 1代表首頁推薦 2代表欄目推薦 4代表內頁推薦 8代表其他推薦 那麼如果position 欄位的值為3就代表首頁推薦 欄目推薦 1 2 如果position 欄位的值為7代表首頁推薦 欄目推薦 內頁推薦 1 2 4 然後 position i pos...