假如给你一个二进制 1101101010101 问你转换成10进制是多少 反正 我第一想到的是用2的k次方 这样算
其实完全不用 用如下代码 就可-------我们假设以 字符串来接受这个二进制 一般我们也都是这样做的
1 for( int i = 0 ; str[i]!=‘\0‘ ; i++ ) 2 { 3 sum = sum*2 + str[i] - ‘0‘; 4 }
我们通过这个*2也达到了 k次方这个效果 因为i =0恰恰是 二进制的最高位
同样 当我任意给你一个十进制数字 23421 我想让你转换成二进制数字 有什么快捷的方法呢?
我们用 val 来代表这个十进制数字 并且将转换得到的二进制序列 存入str字符串数组中去
1 while(n) 2 { 3 str[cnt++] = (n&1)+‘0‘; 4 // str[cnt++] = n%2+‘0‘; 5 n >>=1; 6 } 7 for( int i = cnt-1 ; i>=0 ; i-- ) 8 { 9 cout << str[i]; 10 }
这边可以有2种写法 n&1 与n%2 随便怎么写 前者速度会快一点 但是不要忘记了括号 根据运算符的优先级
还有就是个 输出顺序 是逆序输出的 别搞错了 =-=
感觉 这还是会在比赛中可能蛮有用的
today:
喜欢就是放肆 但爱就是克制
我还没读懂这句话
这个 爱 是指什么?
二进制与十进制之间蛮好的转换方式
时间: 2024-09-30 12:41:20