題目描述
有乙個介於0和1之間的實數,型別為double,返回它的二進位制表示。如果該數字無法精確地用32位以內的二進位制表示,返回「error」。
給定乙個double num,表示0到1的實數,請返回乙個string,代表該數的二進位制表示或者「error」。
測試樣例:
0.625
返回:0.101
class bindecimal else
base = base/2;
if (res.size() > 32)
return
"error";
}return res;
}};
整數轉二進位制
//十進位制轉換為二進位制
#include
#include
#include
#include
using
namespace
std;
string s;
int main(int argc,char * argv)
//字串反轉
獲得字串的開始位置
獲得字串的結尾位置
std::reverse(s.begin(),s.end());
cout
//const char *sss=s.c_str();
//cout<-":"-->")<}
return
0;
}
二進位制小數
要理解這道題,首先要知道什麼樣的小數可以轉化為二進位制形式,怎樣的小數不能被轉化為二進位制形式,自己測試幾組資料發現 1.可以轉化為二進位制的小數在有限次的乘二之後,小數部分會變零。舉個例子 0.625 2 1.25 1.25 2 2.5 2.5 2 5.0 5.0的小數部分變成了 0 2.不能轉化...
小數 二進位制
首先,給出乙個任意實數,整數部分用普通的二進位制便可以表示,這裡只說小數部分如何表示 例如0.6 文字描述該過程如下 將該數字乘以2,取出整數部分作為二進位制表示的第1位 然後再將小數部分乘以2,將得到的整數部分作為二進位制表示的第2位 以此類推,知道小數部分為0。特殊情況 小數部分出現迴圈,無法停...
十進位制小數轉為二進位制小數
整數和小數分別轉換.整數除以2,商繼續除以2,得到0為止,將餘數逆序排列.22 2 11 餘 0 11 2 5 餘 1 5 2 2 餘 1 2 2 1 餘 0 1 2 0 餘 1 所以22的二進位制是10110 小數乘以2,取整,小數部分繼續乘以2,取整,得到小數部分0為止,將整數順序排列.0.81...