//*********************************************
成都創新互聯專注于企業全網營銷推廣、網站重做改版、甘谷網站定制設計、自適應品牌網站建設、成都h5網站建設、商城網站制作、集團公司官網建設、外貿網站制作、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為甘谷等各大城市提供網站開發制作服務。
//不使用求余和除法的二進制轉bcd的算法
//使用了C51中 指令DA的思路
//本人原創 已測試 以應用實際項目中
//Lhex_to_bcd
//*********************************************
//**************************
// 數據自加 并作10進制檢查
//
//**************************
void C51_DA(unsigned char *da1,unsigned char Ln,unsigned char ac0)
{
unsigned char i;
unsigned char ac = ac0;//進位標志
for(i=0;iLn;i++)
{
da1[i] = da1[i] + da1[i] + ac;
if(da1[i] 9)
{
da1[i] = da1[i] - 10;
ac = 1;
}
else
{
ac= 0;
}
}
}
//**************************************
// 多字節整形轉 bcd
// 結果保存為非壓縮bcd碼
// 輸入數據
// da1 用來保存轉換結果
// 長度大于 (l+1)*2
// da2 被轉換數據
// l da2 長度 用字節個數表示
// 輸出 無
//**************************************
void Lhex_to_bcd(unsigned char *da1,unsigned char *da2,unsigned char l)
{
unsigned char i;
unsigned char m;
unsigned char tmp;
unsigned char Ln = (l+1)*2; //計算結果的長度
for(i=0;iLn;i++) //初始化計算結果
da1[i] = 0;
for(m=0;ml;m++) //循環輸入數據的字節數
{
tmp = da2[l-1-m];
for(i=0;i8;i++)//每個字節循環8次
{
if(tmp0x80) //取最高 1 bit
C51_DA(da1,Ln,1);
else
C51_DA(da1,Ln,0);
tmp=1;
}
}
}
經常看到C語言的main函數定義為:
int main(int argc, char *argv[]),但是在函數體中經常是根本不用main函數中的這兩個參數,這兩個參數用于在運行程序時,從外部給程序傳遞參數,其中argc中保存了參數的個數,argv中分別保存了各個參數.
例如一個程序的main()函數頭部形如int main(int argc, char *argv[]),編譯鏈接后生成的可執行文件名為a.exe,那么請注意下面的調用:
a.exe abc def
在上面的命令行中,a.exe是要運行的程序名稱,后面的abc和def就是傳入程序的兩個參數,這兩個參數就通過argc和argv傳入程序,注意這些參數都是字符串。
通過上面的調用,在這個程序中,argc=3,a.exe是第一個參數,這個字符串將保存在argv[0]中,abc和def分別是第二和第三個參數,它們分別被保存在argv[1]和argv[2]中
C51帶進位的循環左右移指令是什么:這必須用匯編語言:RLC A、 RRC A。
_crol_()、_cror_(),都不是指令,它們是C語言的函數。
原發布者:血戰長空wlg
題目:數制轉換問題1.需求分析將十進制數N轉換成八進制數是計算機實現計算的基本問題,解決方案很多,其中最簡單的方法是除8取余法。1)本方案采用順序棧的方式模擬整個過程。其原理如下:例子:(1348)10=(2504)8NNdiv8Nmod8134816841682102125202從中可以看出,最先產生的余數4是轉換加過的最低位,這正好符合棧的“后進先出”的特性。2)功能:從鍵盤輸入任意一個非負十進制整數,輸出與其等值的八進制數;若輸入一個負數,則顯示輸入錯誤,請重新輸入。3)測試數據:(1348)10=(2504)8,(0)10=(0)8,(-1234)10輸入數據錯誤。2.概要設計定義順序棧類型,由鍵盤輸入非負十進制整數N,執行以下循環操作:N%8入棧,N=N/8,直至N=0。主要函數由建立空棧Initsqstack()、入棧Push()、出棧Pop()和main()函數組成。過程中函數調用關系圖如下:3.詳細設計1)數據類型定義structSqstack{int*bottom;int*top;intmaxsize;};2)系統主要子程序詳細設計A.建立空棧intInitsqstack(Sqstacks){s.bottom=(int*)malloc(sizeof(int)*20);if(s.bottom){s.top=s.bottom;
我有點沒搞明白(45、81、673938)取最后一位是怎么得出5138的,不是518嗎?
但還是隨便寫一下吧
#include?stdio.h
#include?stdlib.h
int?getLastBit(int?number);
int?main()
{
int?i?=?0,?n?=?0;
int?number?=?0,?newnumber?=?0;
printf("輸入整數個數:");
scanf("%d",?n);
for(i?=?1;?i?=?n;?i++)
{
scanf("%d",?number);
newnumber?*=?10;????????????
newnumber?+=?getLastBit(number);????
}
printf("新整數是:%d\n",?newnumber);
return?0;?
}
int?getLastBit(int?number)
{
if(number?=?0)
{
printf("錯誤!\n");
exit(1);
}
else
return?number%10;
}
任意進制之間的進制轉換。需要考慮高精度整形的設計,用數組模擬一個整形變量。一位一位的進行進制轉換,算法思想和十進制轉換到二進制相同,除以目標進制,余數為低位。這種進制轉換實用性不強,一般出現在計算機程序競賽當中。
8,10,16進制的轉換。在C語言中有不少函數都能實現上面幾種進制之間的進制轉換。
推薦其中的sprintf/sscanf函數。
sprintf格式的規格如下所示。[]中的部分是可選的。
%[指定參數][標識符][寬度][.精度]指示符
若想輸出'%'本身時, 請使用'%%'處理。
1. 處理字符方向。負號時表示從后向前處理。
2. 填空字元。 0 的話表示空格填 0;空格是內定值,表示空格就放著。
3. 字符總寬度。為最小寬度。
4. 精確度。指在小數點后的浮點數位數。
轉換字符
%% 印出百分比符號,不轉換。
%c 整數轉成對應的 ASCII 字元。
%d 整數轉成十進位。
%f 倍精確度數字轉成浮點數。
%o 整數轉成八進位。
%s 整數轉成字符串。
%x 整數轉成小寫十六進位。
%X 整數轉成大寫十六進位。
例程(16進制和10進制之間的轉換):
#include?stdio.h??
#include?limits.h??
int?main()??
{??
char?s[100]?=?{0};??
sprintf(s,?"%x",?INT_MAX);??
printf("%s\n",?s);?//?7fffffff??
char?str[100]?=?"7fffffff";??
int?i?=?0;??
sscanf(str,?"%x",?i);??
printf("%d\n",?i);?//?2147483647??
return?0;???
}
網頁名稱:c語言進位函數,java進位函數
網站路徑:http://m.kartarina.com/article28/hegdcp.html
成都網站建設公司_創新互聯,為您提供云服務器、Google、軟件開發、定制開發、App開發、企業建站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯