十进制整数转二进制/十六进制整数

1.十进制整数转换为二进制整数
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。
如:

254 = (11111110)B
254 / 2 = 127 ……余0
127 / 2 = 63 ……余1
63 / 2 = 31 ……余1
31 / 2 = 15 ……余1
15 / 2 = 7 ……余1
7 / 2 = 3 ……余1
3 / 2 = 1 ……余1
1 / 2 = 0 ……余1

代码实现:

package com.Test;
import java.util.Scanner;
public class Test {
    //主方法
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);  //创建一个Scanner类的对象in
        System.out.println("请输入一个十进制整数:");
        int num1 = in.nextInt();  //从键盘接收一个整数
        mod2(num1);  //调用十进制数转二进制数的方法
    }
    //十进制数转二进制数的方法
    public static int mod2(int num){
        if (num == 0){  //递归边界
            return num;
        }
        mod2(num / 2);  //递归调用方法自身
        System.out.print(num % 2);  //输出每次递归num模2的余数
        return 0;
    }
}

原理:
二进制的基数为2,十进制化二进制时所除的2就是它的基数。其中涉及到位权的概念。某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为 “位权 ” 。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数次幂。十进制数的百位、十位、个位、十分位的权分别是10的2次方、10的1次方、10的0次方,10的-1次方。二进制数就是2的n次幂。

(11111110)B转化为十进制数A:
A = 0x2^0+1x2^1+1x2^2+1x2^3+1x2^4+1x2^5+1x2^6+1x2^7 = 254

2.十进制整数转换为十六进制整数
十进制整数转换为十六进制整数采用"除16取余,逆序排列"法。具体做法是:用16整除十进制整数,可以得到一个商和余数;再用16去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。(十六进制中0-9用0-9表示,10-15用A-F表示)
如:

254 = (FE)16
254 / 16 = 15 ……余14(E)
15 / 16 = 0……余15(F)

代码实现:

package com.Test;
import java.util.Scanner;
public class Test {
    //主方法
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);  //创建一个Scanner类的对象in
        System.out.println("请输入一个十进制整数:");
        int num1 = in.nextInt();  //从键盘接收一个整数
        mod16(num1);  //调用十进制数转二进制数的方法
    }
    //十进制数转十六进制数的方法
    public static int mod16(int num) {
        int Tag;
        if (num == 0) {  //递归边界
            return num;
        }
        mod16(num / 16);  //递归调用方法自身
        Tag = num % 16;
        if (Tag > 9) {
            System.out.printf("%c", Tag - 10 + 'A');  //大于9-15用A-F表示
        }
        else {
            
            System.out.print(Tag);  //输出每次递归num模16的余数
        }
        return 0;
    }
}

原理:
十六进制的基数为16,十进制化十六进制时所除的16就是它的基数。其中涉及到位权的概念。某进制计数制中各位数字符号所表示的数值表示该数字符号值乘以一个与数字符号有关的常数,该常数称为 “位权 ” 。位权的大小是以基数为底,数字符号所处的位置的序号为指数的整数次幂。十进制数的百位、十位、个位、十分位的权分别是10的2次方、10的1次方、10的0次方,10的-1次方。十六进制数就是16的n次幂。

(FE)16转化为十六进制A:
A = 14x16^0+15x16^1 = 254
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值