进制书写格式:
十进制:Java中,数值默认都是10进制,不需要加任何修饰。
二进制:数值前面以0吧、开头,b大小写都可以。
八进制:数值前面以0开头。
十六进制:数值前面以0x开头,x大小写都可以。
进制:指进位制,是人们规定的一种进位方式表示某一位置上的数,运算时逢X进一位。
十进制是逢十进一,二进制逢二进一,八进制逢八进一,十六进制逢十六进一……
依此类推就是进制格式:要注意的是十六进制的数从十开始用英文字母表示:
例如:十六进制格式为:1 2 3 4 5 6 7 8 9 a b c d e f
进制转换:
第一位数乘于1,第二位数乘于2,第三位数乘于4,第四位数乘于8,第五位数乘于16,第六位数乘于32,第七位数乘于64,第八位数乘于128,第九位数乘于256……等。以此类推用1倍数往上推;
二进制
二进制的:0010 1001 等于八进制的:51 十进制的:41 十六进制的:29
二转八:数字从右往左数,数字没有2,到2了就进一 三位为一个数
二转十六:数字从右往左数,数字没有2,到2了就进一 四位为一个数
二转十:公式:系数*基数的权次相加
系数:每一【位】上的数
基数:几进制,就是几
权:从数值的右侧,以0开始,逐个+1增加
例:二进制101001转八进制 = 1*8^5 0*8^4 0*8^3 1*8^2 0*8^1 1*8^0 然后把他们都加起来就是十进制的结果等于51
例:二进制101001转十进制 = 1*10^5 0*10^4 0*10^3 1*10^2 0*10^1 1*10^0 然后把他们都加起来就是十进制的结果等于41
例:二进制101001转十六进制 = 1*16^5 0*16^4 0*16^3 1*16^2 0*16^1 1*16^0 然后把他们都加起来就是十进制的结果等于29
八进制
八转二:拆分成0和1对应的数字,例:八进制的65等于二进制的110101,就是从右往左数1、2、4为一位数,101的个十百分别对应的是1、2、4位才能进制到该数值,后又是三位为一位数;
八转十:公式:系数*基数的权次相加
系数:每一【位】上的数
基数:几进制,就是几
权:从数值的右侧,以0开始,逐个+1增加
例:八进制65转十进制 然后把他们都加起来就是十进制的结果等于53
八转十六:可以先转二进制再转十六进制,
十进制:
公式:除基取余
使用源数据,不断的除以基数(几进制,基数就是几)得到的余数,直到商为0,再将余数带拼起来即可。
十六进制:
十六转二:拆分成0和1对应的数字,例:十六进制的35等于二进制的110101,就是从右往左数1、2、4为一位数,0101的个十百分别对应的是1、2、4、8位才能进制到该数值,后又是四位为一位数;
十六转八:可以先转二进制再转八进制,
十六转十:公式:系数*基数的权次相加
系数:每一【位】上的数
基数:几进制,就是几
权:从数值的右侧,以0开始,逐个+1增加
例:十六进制65转十进制 然后把他们都加起来就是十进制的结果等于96
原码反码补码:
注意:计算机中的数据,都是以二进制补码的形式再运算,而补码则是通过反码和原码推算出来的。
原码(可直观看出数据大小)
就是二进制定点表示法,即最高位为符号位,【0】表示正,【1】表示负,其余位表示数值的大小。
通过一个字节表示+7和-7,代码:byte b1=7;byte b2 = -7;
一个字节等于八个比特位,也就是八个二进制位
0(符号位) 0000111
1(符号位) 0000111
反码:
正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码(数据以该状态进行运算)
正数的补码预取原码相同;负数的补码是在其反码的末位加1;
例:求-7的补码
原码:1(符号位) 0000111------------>符号位不变,0变1,1变0
反码:1(符号位) 1111000------------>反码的末尾加1,求补码
+1
补码:1(符号位) 1111001
补码推原码返回来减1操作即可;