很簡單.如果這個十進制數(shù)的值在 C/C++ 語言本身所支持的范圍內(nèi),如 char,short,int,long 之類,只需循環(huán) N 次就能得到二進制值.這里的 N 等于數(shù)據(jù)類型的位數(shù),如 char=8,short=16,int=32,long=32.轉(zhuǎn)換的方法就是直接判斷數(shù)據(jù)的每一位,示例代碼(假定要轉(zhuǎn)換一個值在0~4294967295之間的無符號長整型數(shù))如下:
#include
#include
//參數(shù) value 是要轉(zhuǎn)換的數(shù),len1 是要返回的連續(xù)1的最大長度,
//len0 是要返回的連續(xù)0的最大長度
void BinaryPrint( unsigned long value,int * len1,int * len0 )
{
int i,max0,max1;
*len1 = 0;
*len0 = 0;
max0 = 0;
max1 = 0;
//由于要轉(zhuǎn)換的數(shù)值,也就是參數(shù) value 是無符號長整型,占32位,
//所以循環(huán)32次
for( i=0; i> i) )
{ //遇到為1的位
if( max0 )
{ //且之前記下的連續(xù)0長度不為0
//保存連續(xù)0的最大長度
if( max0 > *len0 ) *len0 = max0;
max0 = 0;
max1 = 1;
}
else
{
max1++;
}
printf( "1" );
}
else
{
if( max1 )
{ //且之前記下的連續(xù)1長度不為0
//保存連續(xù)1的最大長度
if( max1 > *len1 ) *len1 = max1;
max1 = 0;
max0 = 1;
}
else
{
max0++;
}
printf( "0" );
}
}
printf( "\n" );
}
#define __DO_TEST__ 1
#if __DO_TEST__
int main( int argc,char ** argv )
{
int max0,max1;
unsigned long val = 1234567890; //測試值,請任意修改
printf( "value = %lu:",val );
BinaryPrint( val,&max1,&max0 );
printf( "max0 = %d,max1= %d\n",max0,max1 );
}
#endif沒看懂,“ * ”這個符號沒用過,不知道代表啥意思……if( value & (0x80000000 >> i))這個十六進制的條件也沒看懂…… 還有我做的那道題只要求int就夠了,不用unsigned long,是直接替換就可以了嗎?星號"*" 有多種含義,而且這是最基本的 C/C++ 知識,所有的 C/C++ 語言教材上都會講到,應(yīng)該能看懂才對,沒看懂說明尚未入門。不過你既然問及,這里就說上幾句:1) 函數(shù) voidBinaryPrint( unsigned long value, int * len1, int * len0 ) 定義中,參數(shù) int * len1 及 int * len0 表示傳入的是整型指針,這里星號"*" 是"指針"(或稱”地址“) 的含義;函數(shù)體中的代碼 *len1 = 0; 則表示給參數(shù)(整型指針 len1 )"賦值" 為0; 代碼 if( max0 > *len0 ) 的 *len0 則表示對整型指針 len0 “取其地址中所保存的值”(或者簡稱“取值”);主函數(shù) intmain( int argc, char ** argv ) 中的 char ** argv 則表示參數(shù) argv 是一個指向“字符指針”(其實理解成“字符串”更好)的“指針”,也可以寫成 char * argv[ ] 是等效的,所以你可以將 char ** argv 理解成是一個 “字符串數(shù)組”。2)代碼 if( value & (0x80000000 >> i))的意思就是“如果第 i 位為1”。3)可以直接參數(shù) value 改成 int 類型。若是改為其它(如 char, short) 類型,相應(yīng)的循環(huán)位置還要改成對應(yīng)位數(shù)(一般char為8位,short為16位, int位數(shù)在有的老舊平臺如 DOS 上的 TurboC 上是16位,現(xiàn)在一般都是32位)。總之,建議先去仔細讀書。
c++怎么把一個十進制數(shù)轉(zhuǎn)換成二進制,并計算二進制數(shù)最長連續(xù)1和0的長度
c++怎么把一個十進制數(shù)轉(zhuǎn)換成二進制,并計算二進制數(shù)最長連續(xù)1和0的長度
其他人氣:425 ℃時間:2020-06-24 14:23:22
優(yōu)質(zhì)解答
我來回答
類似推薦
- 二進制數(shù)111.11轉(zhuǎn)換成十進制數(shù)是( ?。?A.7.3 B.7.5 C.7.75 D.7.125
- 二進制數(shù)轉(zhuǎn)十進制數(shù)如何轉(zhuǎn)?
- 十進制數(shù)89轉(zhuǎn)換成二進制數(shù)全過程
- 二進制數(shù)字轉(zhuǎn)換成十進制數(shù)字要怎么計算?
- 二進制和十進制之間的轉(zhuǎn)換
- 《精衛(wèi)填海》,古文翻譯.急.
- can后面要加什么詞?動詞原形?ing?還是什么的
- F(x)與g(x)=1/3x3+x2+2的圖像關(guān)于A(0,1)對稱,求f(x)解析式
- 小明收集的郵票枚數(shù)是小亮的3/5,小明收集的郵票比小亮少60枚,小明和小亮各收集了多少枚?
- 某人從家里去上班,每小時行走5KM,下班按原路返回時,每小時行4KM,結(jié)果下班返回比上班多花10分鐘……
- 1.《牛郎織女》的故事在我國家喻戶曉,許多古詩詞中也引用了這個故事.你能寫出幾句么?試一試(在寫9句)
- 文言文蔣母教子翻譯
猜你喜歡
- 1食鹽晶體在暴露的空氣中是否會被風化
- 2有什么事例能證明“青少年時期必須重視知識的記誦與積累”,20字左右
- 3一個數(shù)除以大于1的數(shù),商一定大于這個數(shù)._.(判斷對錯)
- 4群居動物和獨居動物相比有哪些劣勢和優(yōu)勢
- 5將一個各面涂有顏色的正方體,分割成同樣大小的27個小正方體,從這些正方體中任取一個,恰有3個面涂有顏色的概率是( ) A.1927 B.49 C.23 D.827
- 6he spends a lot of money collecting stamps(改成同義句)
- 7有衣柜,床在臥室里用英語怎么說
- 856.5乘以9.9乘以56.5簡算
- 9解不等式應(yīng)用題的最快方法(方法!)
- 10體操方陣最外層56人,這個方陣共有多少人?
- 11雷鋒的書有哪些
- 12happening 為什么不雙寫n?可不可以詳細說明加ing的具體規(guī)則?