十进制(逢10进1)是我们最常用的一种数位迚制方式十进制和二进制可以相互转换,举例如下:,今天小编就来说说关于编程有没有用到二进制?下面更多详细答案一起来看看吧!

编程有没有用到二进制(零基础学编程之进制转换基础)

编程有没有用到二进制

十进制

十进制(逢10进1)是我们最常用的一种数位迚制方式。十进制和二进制可以相互转换,举例如下:

23678(10进制) = 2*10000 3*1000 6*100 7*10 8*1 = 2*10^4 3*10^3 6*10^2 7*10^1 8*10^0 = 23678

如上例所示,10称做基数,10^n(10的n次幂)被称作,… 10000、1000、100、10、1。

二进制

二进制(逢2进1),是基数为"2"的进制。计算机使用二进制,是因为计算机设计者发现在复杂电路中,将低电平表示0,高电平表示1,只有两种电位在通过门电路之后更容易计算。其实用其它进制也可以表示,但是比较麻烦。

二进制的基数为2,权为2^n(2的n次方),...、128、64、32、16、8、4、2 1。

0100 0001(2进制) = 1*64 1*1 = 65(10进制)

补码基础

关于补码,有如下比较有趣的演化过程:

假如计算机中使用4位的二进制表示数据,如图3-1中的a,最多能表示0到15(10进制),后有计算机大佬在此基础上做了一个细微改动,将所有二进制以1开头的数(大于7的数)放到0之前:如图3-1的b,并且规用用这部分8-15对应二进制表示负数-1到-8,这就是4位补码:如图3-1的c。

图3-1

仔细观察会发现,-1(1111)+1(0001) = 1 0000,舍弃最高位"1"(超出4位),保留最后4位(4个0),则-1(1111)+1(0001) = 0(1 0000)

- 1 1111 1 0001 ---------------------- 10000

同理-8(1000) 7(0111)=-1(1111)。

至此,得出了结论:在封闭的四位运算中(超出4位就丢弃),这种设计和规定是非常合理的。可是,我们又有了疑问:(-1)*(1)=?,会不会和结果就不一样了?我来算一下:

-1 1111 * -1 1111 --------------------------- 1111 1111 1111 1111 ----------------------- 0001

结果一样,(-1)*(-1)= 1即1111 * 1111 = 0001,这种数据运算规则就是补码运算。

总结:

计算机中正数和负数的关系是取反加一。举例如:~3 1=-3(~3表示对3取反)

补码运算是封闭的:运算结果保留在补码范围内,超范围就溢出.

补码边界运算有溢出风险.

4位二进制补码最多能表示2^4(16)个数,数的范围是-8~7

8位二进制补码最多能表示2^8(256)个数,数的范围是-128~127

16位二进制补码最多能表示2^16(65536)个数,数的范围是-32768~32767

32位二进制补码最多能表示2^32个数,数的范围是-2G~2G-1(1G= 1024*1024*1024)

当我们知道了计算机中的一个二进制数,比如0000 1111,它的10进制为:

0000 1111 = 2^3 2^2 2^1 2^0 = 15(十进制) // 因为是正数,直接转换既可

那1111 1001,表示的十进制数是多少?

1111 1001 取反码 0000 0110 //第1步:按位取反 加1 1 //第2步:末尾加1 ---------------------------- 0000 01111 (7) //第3步:将二进制转换为十进制 (-7)//因为是以1开头,带上负号

则计算机中存储的1111 1001转换为十进制数是-7。反过来的换算过程如下:

7 0000 0111 //第1步:先算出7的二进制 取反码 1111 1000 //第2步:按位取反 加1 1 //末尾加1 ---------------------------- 1111 1001 (-7)

计算机中二进制(转)十进制:

以0开头的,直接将2进制转换为10进制;

以1开头的,需要4步,按位取反->末尾位加1->转换为十进制->添加负号。

十进制数(转)计算机中二进制数:

正数取原码,负数按位取反末尾加1。

需要注意的是:4位补码不能表示8。

java中的二进制规则

Java内部只有二进制补码,计算机内部数据以二进制补码表示。

Java内部采用补码运算,自动发送上溢出(乘法为上溢出)和下溢出(除法为下溢出)。

Java内部没有10进制,但是Java尽量按照人类习惯输入输出。

补码的负数,最高位是1,也称作符号位。

十六进制

十六进制是二进制制的简写,方便专业人员书写二进制数据。比如一个十进制数1234567890,用十六进制表示就比二进制表示更方便,如下所示:

十进制: 1234567890 二进制: 1001001100101100000001011010010 十六进制: 499602d2

十六进制的基数为16,权为16^n(16的n次方),...、4096、256、16、1。

十六进制与十进制对照表:

0 1 2 3 4 5 6 7 8 a b c d e f (16进制) 0 1 2 3 4 5 6 7 8 10 11 12 13 14 15 (10进制)

十六进制和其他进制间的转换:

41(16进制) = 4*(16^1) 1*(16^0) = 65(10进制) = 0100 0001(2进制)

10进制、2进制、8进制、16进制对照表