Java:进制

Java知识点总结:想看的可以从这里进入

2.5、进制

在计算机科学和数学中,进制是用于表示数值的一种方法。计算机的世界中只有二进制,计算机存储和运算的所有数据(数字、字符、图片、声音、视频等),在计算机都是二进制数据。

2.5.1、简介

进制就是当一个数,满足该进制的最大数时,该数前位+1,本位清零。我们最熟悉的就是十进制:9进一位就是10,19进一位就是20。

常用的进制一般有4种:

  1. 二进制:计算机底层都是二进制,0和1,满二进一,前缀一般为0b。

  2. 八进制:0-7,满八进一,以数字0为前缀。

  3. 十进制:我们正常使用的进制为十进制,0~9,满十进一,无前缀为默认进制

  4. 十六进制:0-9和A-F,满十六进一,以0X或0x为前缀,广泛用于计算机系统,特别是在内存地址和颜色编码中。

    十进制二进制八进制十六进制
    00b0000x0
    10b1010x1
    20b10020x2
    30b11030x3
    40b100040x4
    50b101050x5
    60b110060x6
    70b111070x7
    80b10000100x8
    90b10010110x9
    100b10100120xA
    110b10110130xB
    120b11000140xC
    130b11010150xD
    140b11100160xE
    150b11110170xF
    160b100000200x10
    170b100010210x11
    180b100100220x12
    190b100100230x13
    200b100110240x14

在Java也可以使用不同进制表示:
在这里插入图片描述

2.5.2、二进制

二进制(Binary)是一种基数为2的数制系统,它只使用两个数字:0 和 1。

目前计算机底层都是二进制形式,因为电路的设计是基于开关两种状态,完美的适配了二进制。

而二进制有三种方式:原码、反码、补码。对于一个正数来说,三个码表示出来都是一样的结果。

  • 原码:直接将一个数转换成二进制就是原码,最高位(最左边的位)用作符号位,符号位都是用0表示“正”,用1表示“负”

    比如1个byte的变量为1个字节,8个bit,在二进制的形式下13和-13的原码为:

    13: 0 0 0 0 1 1 0 1

    -13:1 0 0 0 1 1 0 1

  • 反码:对原码进行取反操作,但是最高的符号位不变(反码的出现是为了解决原码不能用于计算负数)

    正数的反码等于原码,负数的反码是符号位保持不变,其余位取反。

    13反码: 0 0 0 0 1 1 0 1

    -13反码:1 1 1 1 0 0 1 0

  • 补码:正数的补码和原码相同,负数补码就是在反码的基础上加上一个1(补码是为了解决负数计算时跨0的问题,计算机底层存放的就是补码)

    13补码: 0 0 0 0 1 1 0 1

    -13补码:1 1 1 1 0 0 1 1

在计算机底层二进制的存储中,所有的数值,无论正负,都是以补码的方式存储的。原因在于,使用补码,可以将符号位和数值域统一处理,同时,加法和减法也可以统一处理 。

计算二进制时,要换成补码计算,正数的原码补码相同,负数需要转换。

2.5.3、进制转换
  • 十进制转换为其他进制:转换成几进制就对几进行求余

    • 转换成2进制:不断除以2并记录余数,直到商为0。余数的逆序即为二进制数。

      在这里插入图片描述

    • 转换成8进制:通过不断除以8并记录余数,直到商为0。余数的逆序即为八进制数。

    • 转换成16进制:通过不断除以16并记录余数,直到商为0。余数的逆序即为十六进制数。

  • 其他进制转换成10进制:使用位置权重法,每一位数乘以其对应的进制权重,然后求和。

    在这里插入图片描述

  • 转换成二进制

    • 8进制转换成二进制:每一个八进制的数字可以直接转换为一个3位的二进制数。

    • 16进制转换成2进制:每一个十六进制的数字可以直接转换为一个4位的二进制数。

      在这里插入图片描述

  • 二进制转换为8进制:从右向左(从低位到高位)将二进制数分成每组3位。如果最左侧的一组(最高位)不足3位,则在左侧补0。然后将每组二进制数转换为相应的八进制数。
    在这里插入图片描述

  • 二进制转换16进制:从右向左(从低位到高位)将二进制数分成每组4位。如果最左侧的一组(最高位)不足4位,则在左侧补0。然后将每组二进制数转换为相应的十六进制数。

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰 羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值