Q1:十进制怎么转化成二进制
0.110011001100……1100…… 十进制数转换为二进制数的方法:整数部分采用除2取余法、小数部分采用乘2取整法分别转换后组合得到。除2取余法:逐次除以2,每次求得的余数即为二进制数整数部分各位的数码,直到商为0;乘2取整法:逐次乘以2,每次乘积的整数部分即为二进制数小数各位的数码。
Q2:如何把十进制转化为二进制
你以十进制的数除以你所要转换的进制数,把每次除得的余数记在旁边,所得的商数继续除以进制数,直到余数为0时止.例如你要把100转换成八进制: 100/8=12...(余数为4); 12/8=1.....(余数为4); 1/8=0......(余数为1); 然后把相应的余数从低向高顺着写出来,如上的为144,此即为100的八进制表示形式. 十进制转换为十六进制与二进制与前面的转化为八进制相同,如100转换为十六进制: 100/16=6....(余数为4); 6/16=0......(余数为6); 同理则以十六进制表示的100形式为64; 100转换为二进制: 100/2=50....(余数为0); 50/2=25.....(余数为0); 25/2=12.....(余数为1); 12/2=6......(余数为0); 6/2=3.......(余数为0); 3/2=1.......(余数为1); 1/2=0.......(余数为1); 所以100的二进制表示形式为1100100; 要换回来就反着算!
Q3:带有小数的十进制数如何转化为二进制数
小数点之前用模2取余法: 10(D) = 1010(B) 这个就不用给你讲了吧 小数点之后用乘2取整法: 0.5(D) = 0.1(B) 按如下算法进行: 1)首先给小数部分乘2,如果小数点前为1;则计1,为0,则计0。 2)再对剩下的小数部分乘2,再计出1或0。 3)重复以上步骤,直至达到需要的精度。 例如:0.2887转化为二进制数: 0.2887 * 2 = 0.5774 ------------- 计 0 0.5774 * 2 = 1.1548 ------------- 计 1 0.1548 * 2 = 0.3096 ------------- 计 0 0.3096 * 2 = 0.6192 ------------- 计 0 0.6192 * 2 = 1.2384 ------------- 计 1 ………………(算到需要的精度为止) 所以:0.2887(D)=0.01001…(B)
Q4:十进制怎么转换为二进制?
比如10,除以2则商是5 余数是0 再用商5除以2 商是2 余数是1 再用商2除以2 商是1 余数是0 用商1除以2 商是0 余数是1 至此结束把余数从下往上看即使1010,这既是10的二进制数
Q5:二进制数如何转换成十进制数?
就是是第几位就乘以2的几次方 从右往左数 二进制转十进制 从最后一位开始算,依次列为第0、1、2...位 第n位的数(0或1)乘以2的n次方 得到的结果相加就是答案 例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107. 二进制01101011=十进制107
Q6:通过辗转相除来将十进制转为二进制和十六进制 ;以下代码怎么理解?
#include
using namespace std;
int flag=1;
void tran(int n,int d)
{
int mod;
mod=n%d; //求n在d进制下的末位数
n=n/d; //去掉在d进制下n的末位数
if(n) //当n>0时,就递归------------这一行比原来简化了
tran(n,d); //对减少了一位的n继续转换
switch(mod)
{
case 10:cout<<"A";break; //对10~15的余数,输出字母
case 11:cout<<"B";break;
case 12:cout<<"C";break;
case 13:cout<<"D";break;
case 14:cout<<"E";break;
case 15:cout<<"F";break;
default:cout< } } int main() { int n,d; cin>>n>>d; //读取要转换的整数及目标进制值 tran(n,d); return 0; }
追问 : 为什么不能把if改成while 还有当执行到if(n) tran(n,d);时 为什么直接执行switch函数,而不是去递归 追答 : 不是直接执行,而是递归返回了。