java学习进制
Posted David Wu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java学习进制相关的知识,希望对你有一定的参考价值。
目录结构:
1,为什么计算机代码需要用2进制表示
大家都知道我们熟练的机制是十进制,也就是(0到9),逢10进1。如果要让电脑使用十进制,首先,应该让电脑能够识别出10个数字。通常的考虑是,通过元器件中电压的高低水平来分别标识10个数字。假如最高电压为10V,那么每个数字标识的就是1V,这种情况造成的后果就是每个数字的电压很容易收到外界电压干扰。除了这种问题,还有一个更大的问题,就是如果要在硬件上识别这10中状态,其电路结构将非常复杂。
由于二进制数只有2个数码,电路就很简单了,因为只有两种稳定状态下的元件。二进制主要有以下优点:
*运算规则简单
*适合逻辑运算
*易进行转化
*抗干扰能力强
2,原码、反码、补码的关系
首先需要知道,电脑的编码都是补码,正数的原码、反码和补码都是一样的,负数的补码的是原码按位取反得到反码后再加1。
比如:
1的原码为:00000001
1的反码为:00000001
1的补码为:00000001
-1的原码为:10000001
-1的反码为:11111110
-1的补码为:11111111
2.1为什么需要反码、补码
计算机中没有减法、乘法、除法运行,都是通过加法来实现的。比如通过1+(-1)来实现减法。
不使用反码和补码:
3-2=3+(-2)=0000 0011+1000 0010=1000 0101=-5
显然结果不正确。
使用反码不使用补码:
3-2=3+(-2)=0000 0011+1111 1101=1 0000 0000=0
这里得到结果的二进制有9位,如果我们只是考虑8位,那么结果取后面8个0,转化位十进制也就是0。
使用反码使用补码
3-2=3+(-2)=0000 0011+1111 1110=0 0000 0001=1
3,进制的转化
3.1 十进制和二进制的相互转化
十进制转二进制规则:整数部分除2取余,倒序排列。小数部分乘2取整,正序排列。
例如
某个数字:15.4
整数部分为:0000 1111。
小数部分为:
0.4*2=0.8 取整为0 余下 0.8
0.8*2=1.6 取整为1 余下 0.6
0.6*2=1.2 取整为1 余下 0.2
...........
保留两位小数,则是01
于是15.4的二进制为0000 1111.01,可通过在线二进制转化器进行验证
二进制转十进制的规则:按权展开,以此相加。
例如
某个二进制:0000 1111
转化为十进制:1*2^(0)+1*2^(1)+1*2^(2)+1*2^(3)+0*2^(4)+0*2^(5)+0*2^(6)+0*2^(7)=15
3.2 八进制和二进制的相互转化
八进制转二进制规则:“一位转三位”;
二进制转八进制规则:“三位合一位”;
3.3 十六进制和二进制的相互转化
十六进制转二进制规则:“一位转四位”;
二进制转十六进制规则:“四位合一位”;
4,一个字节能够表示的数据范围
一个字节有8位,最高位为0表示正数,最高为1表示负数。
那么:
一个字节的正数范围“0000 0000 ”-“0111 1111”,转化为十进制就是“0”-“127”。
一个字节的负数范围“1000 0000”-“1111 1111”,转化为十进制就是“-128”-“-1”。
所以能够表示的数据范围“-128”-“127”。
![CDATA[ function>以上是关于java学习进制的主要内容,如果未能解决你的问题,请参考以下文章