初始Java
这里我们不描述Java历史,直接二进制
二进制,十进制
- 二进制数字又被叫做机器数,是由1和0组成的数字。
- 十进制数字就是平时我们看到数字比如1、2、3、4等数字叫做十进制数字
二进制和十进制的相互转换
- 将二进制数字的每一位乘以2的n-1次方,这里的n表示该位在二进制数字中的排序(倒序),计算出的数字进行累加得出的数字就是十进制数字。例如:1101,1*2^0=1,0*2^1=0,1*2^2=4,1*2^3=8,累加1+0+4+8=13。
- 十进制数字不断的对2求商,一直求到最后,得出的数字就是二进制数字。例如16,16/2=8,余数0,8/2=4,余数0,4/2=2,余数0,2/2=1,余数0,最后1是余数,得出的二进制数字10000。
那么十进制负数的二进制怎么计算?要实现二进制计算需要学会原码、反码、补码的概念。
bit和byte的概念
bit(比特)和byte(字节)都是计算机中数据的计量单位,其中bit是最小的数据计量单位,1比特的值只能是一个二进制的“1”或“0”,byte是比bit更大的数据计量单位,1byte(一个字节)=8bit(8个比特位)。
一般电脑系统是64位或32位(还有128位),这里的64和32表示什么呢?64表示计算机可以在同一时间计算64个比特位的数据。
原码
对于一个正数,它的原码就是它对应的二进制数字。
对于一个负数,按照绝对值大小转换成的二进制数,然后最高位补1,就是负数的原码。
例如:求12的原码
12/2=6,余数0,6/2=3,余数0,3/2,余数1,最后1是余数,二进制数:1100,原码:00001100,
例如:求-12的原码,依据12的原码,-12的原码:10001100。
反码
对于一个正数:反码与原码相同(乌龟的腚----规定)。
对于一个负数:反码是对该数的原码除符号位外各位取反(1-->0,0-->1)。
符号位:符号位就是在二进制中用来表示一个数字的正或负,是最高位(最左边的一位),1表示负数,0表示正数。
例如:12的反码,12的原码:00001100,反码:00001100。
例如:-12的反码,-12的原码:10001100,反码:11110011
补码
对于一个正数:补码与原码相同(乌龟的腚----规定)。
对于一个负数:补码为对该数的原码除符号位外各位取反,然后在最后一位加1(简单的说负数的补码就是其反码+1).
例如:12的反码,12的原码:00001100,补码:00001100。
例如:-12的反码,-12的原码:10001100,反码:11110011,补码:11110011+1,逢二进一,补码:11110100。
二进制的加法是逢二进一。
负数的二进制就是以补码的形式在计算机中存储的。