写点什么

全网最全 java 进制转换详解

作者:千锋IT教育
  • 2022-12-27
    北京
  • 本文字数:1184 字

    阅读完需:约 4 分钟

1. 进制概念

首先我们得知道进制的概念。所谓的进制,也叫做进位计数制,这是人为定义的带进位的计数方法。当然也有不带进位的计数方法,比如原始的结绳计数法,唱票时常用的 “正” 字计数法等。

任何一种进制,每一位上的数在运算时都是满 X 进一位。比如十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,X 进制就是逢 X 进 1 位。以我们最熟悉的十进制为例,每逢十进一,当数为 19 时,下一位数的尾数便满足该进制的最大数,于是下一位末位清零,前置位 + 1,变成 20。

2. 分类

在计算机中,目前常用的进制有如下几种:

●十进制;

●二进制;

●八进制;

●十六进制

因为在计算机的底层只能处理二进制格式的数据,也就是 0 和 1,其他的文字、数字、字符等信息都要转换成二进制的格式,计算机的底层才能识别处理。所以作为一个程序员,二进制是我们必须要理解和掌握的哦。

3. 二进制

作为一个程序员,必须要掌握的进制就是二进制了,其实我们只需要参考十进制就可以很容易理解进制的问题了。所谓的二进制,里面只有 0 和 1,且满二进一,所以在二进制里是看不到 >=2 的数的。比如二进制的前 10 位数分别是 0、1、10、11、100、101、110、111、1000、1001。

4. 八进制

八进制中有 0~7 共 8 个数字,但没有 8 哦,其规则是满八进一,所以 7 的下一位数不是 8,而是 10。17 的下一位数不是 18,而是 20。比如八进制的前 10 位数分别是 0、1、2、3、4、5、6、7、10、11......

5. 十六进制

十六进制中有 0~F 共 16 个数字,同样没有 16,其规则是满十六进一。在十六进制中,这 16 个数字分别是 0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。即 9 的下一位不是 10,而是 A,10 这个数只是十进制的衍生物,这一点大家要注意!

同理,在十六进制中,19 的下一位不是 20,而是 1A,1F 的下一位才是 20;99 的下一位是 9A,FF 的下一位才是 100。

6. 原码、反码与补码

6.1 原码

对一个正整数来说,所谓的原码,就是指一个整数对应的二进制,比如整数 10 的原码就是 00001010。所以原码就是一个正整数原本对应的二进制形式。但负数的原码和正数却不一样,负数的原码要将正数原码的符号位 (最高位) 改为 1,比如 - 10 的原码就是 10001010。

6.2 反码

正数的反码就是其原码,即正数的原码和反码完全相同。而负数的反码则是将原码中除符号位以外的所有位 (数值位) 都取反,即 0 变成 1,1 变成 0。如 10 的原码和反码都是 00001010,而 - 10 的原码是 10001010,反码则是 11110101。

6.3 补码

正数的补码就是其原码,所以正数的原码、反码、补码都相同。而负数的补码是其反码加 1,-10 的原码是 10001010,反码则是 11110101,补码则是 11110110。我们可以认为,补码是在反码的基础上打了一个补丁,进行了一点修正,所以叫做 “补码”。

所以原码、反码、补码的概念只对负数有实际意义,对于正数来说,原码、反码、补码其实都是一样的,如下图所示:


用户头像

国内IT培训机构良心品牌 2022-08-02 加入

学习资料下载获取,添加QQ:3547925594

评论

发布
暂无评论
全网最全 java 进制转换详解_千锋IT教育_InfoQ写作社区