黑马程序员技术交流社区
标题:
求教二进制的算法
[打印本页]
作者:
絮缘小默
时间:
2014-2-22 00:40
标题:
求教二进制的算法
求教二进制的算法
作者:
jkenny
时间:
2014-2-22 01:18
二进制:逢2进1
加法法则: 0+0=0,0+1=1+0=1,1+1=10
减法,当需要向上一位借数时,必须把上一位的1看成下一位的(2)10。
减法法则: 0-0 =0,1-0=1,1-1=0,0-1=1 有借位,借1当(10) 看成 2 则 0 - 1 - 1 = 0 有借位 1 - 1 - 1 = 1 有借位。
乘法法则: 0×0=0,0×1=0,1×0=0,1×1=1
除法应注意: 0÷0 =0(无意义),0÷1 =0,1÷0 =0(无意义)
除法法则: 0÷1=0,1÷1=1
还是要问二进制转换成其他进制?
转换的方法很多,没种在百度搜下就可以了,我也是自己百度学的。
二进制转八进制和二进制转十六进制最简单
每位二进代表一个数值,从右边开始算如:
二进制:1111
代表:8421 (如果上面二进制数为0那么下面那一位也为0)
二进制转八进制:每3位二进制为一位八进制(3位相加)
二进制转十六进制:每4位二进制为一位十六进制(4位相加)
作者:
不再去想
时间:
2014-2-22 09:06
class ArrayTest
{
public static void main(String[] args)
{
toBin(6);
}
public static void toBin(int num)
{
StringBuffer sb = new StringBuffer();
while(num>0)
{
//System.out.println(num%2);
sb.append(num%2);//添加
num=num/2;
}
System.out.println(sb.reverse());//翻转功能
}
}
这是十进制转换为二进制的代码……,你可以看看
作者:
絮缘小默
时间:
2014-2-22 09:28
好的,很详细,谢谢
作者:
迦罗叶
时间:
2014-2-22 21:41
任何进制都能查的方法
class Demo8{
public static void main(String[] args) {
to(60,15,4);
}
// 定义一个 数 要与上的数 这个数右移的位数
public static void to(int num,int base,int index) {
//判断num是0的情况
while (num == 0 ) {
System.out.println('0');
return;
}
//查表法建立一个数组,16进制所有元素都有也就包含了八进制,二进制
char[] chs = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
//定义一个数组将最后我们要的结果的元素装进去,必须是32位因为int 32位二进制表示
char[] arr = new char[32];
//定义一个指针来记录最后结果数组的有效位
int pos = arr.length - 1;
//判断将有效位的元素值全部赋予最后我们要的结果数组
while (num != 0) {
int temp = num & base;
arr[pos] = chs[temp];
pos--;
num = num >>> index;
}
//从结果位的有效位来循环遍历数组,注意此时的pos是在有效位得到后还自减了一回,所以,我们要+1
for (int x = pos + 1;x < arr.length ;x++ ) {
System.out.print(arr[x]);
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2