黑马程序员---学习笔记3:进制

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-


进制:是一种计数的方式,是数字的表示形式。
常见的进制:二进制,八进制,十进制,十六进制

特殊进制表示形式:
二进制:0b0101101(以0b或0B开头)
八进制:045(以0开头)
十六进制:以0x或0X开头,0x2df。

各种进制的输出方式:
八进制:%o
十进制:%d
十六进制:%x

定义数值:
二进制:0b 0000 0000 0000 0000 0000 0000 0000 1101 (13,计算机中int型占32位,定义的时候不加空格)
八进制:015(13)
十六进制:0xd(13)

进制转换:
进制转换的要素:1)数位 2)基数 3)位权
数位:指数码在数中所处的位置
基数:指进制数
位权:是值该数值位表示的固定值,可以计算出来(比如第三位是1,则二进制1*2^(3-1)=4,十进制1*10^(3-1)=100)
数码*基数^(数位-1)=这个位表示的数

二进制和十进制互转:
10----->2
整数部分除二取余法,小数部分,乘二取整法,高位补0,将得到的余数倒叙就可以得到二进制了
二进制和十六进制互转:
2----->16
整数部分从右向左,每4位合并以为,组成16进制数,小数部分,从左往右,4合1
16---->2
1位拆4位,整数部分从右到左,小数部分从左至右

机器数和真值:
机器数:一个数在计算机中的二进制表示形式,都是带符号位的,最高位0表示整数,最高位1表示负数
真值:二进制(除去符号位)转换成的十进制后的数值,因为机器数的第一位是符号位所以,机器数的形式值就不是真正的值

原码,反码,补码:
数据在计算机的内部是以补码的形式存储的

对于正数:原码=补码=反码,是这个数的二进制表示
原码:数字的二进制表示形式,第一位是符号位
反码:除符号位外,其他位取反
补码:负数的补码是在原码的基础上,除符号位不变,其他各位取反,末位+1(就是反码+1)

小结:
对于引入补码的理解:计算机中减法运算要转换成加法来求值,因为减法的逻辑相对加法过于复杂。
因此引入了补码的概念,来用加法完成减法运算。(这里补码只针对负数)
这个思想最好理解的方向是从圆的角度来想,90度-30度=60度,在一个圆盘里,它所指的方向和90度+(360度-30度)一致。
因为圆的角度在增加过程中,它的指向是循环的,这与确定位数的二进制数表示的数值情况一致,数从0000 0000到1111 1111再到0000 0000,在这种基础下,补角的思想转化成了补码。

补码,我理解为“补数”,即在同样数位下的,两个数数值位相加为2^n的数。

拿8位数为例,1000 0001(原码) 表示-1,补码为1111 1111,当我们除去符号位时可以看出,这两个数分别为000 0001和111 1111,数值位相对于128=2^8互补。
有了这样的基础,在做减法运算时,减法转换成了对数值互补数的加法(不管符号位)。比如000 0101(5)-000 0001(1)=
000 0100(4)等价于000 0101(5)+111 1111(127)=1000 0100(132)从后7位看000 0100(4)等于4,这样,减法成功转换成加法。



你可能感兴趣的:(黑马程序员---学习笔记3:进制)