进制介绍
进制:指进位制,是人们规定的一种进位方式表示某一位置上的数,运算时是逢X进一位。 十进制是逢十进一,二进制是逢二进一,八进制是逢八进一
常见进制:二进制,八进制,十进制,十六进制
原因:计算机数据在底层运算的时候,都是以二进制形式,也有数据是以八进制、十进制、或十六进制进行储存或运算,了解不同的进制,便于我们对数据的运算过程理解的更加深刻。
十进制 运算规则:逢十进一,借一当十。
二进制 介绍:二进制数据是用0和1两个数码来表示。例如:0101000 进位规则是:逢十进一,借一当二。
八进制介绍:采用0、1、2、3、4、5、6、7八个数字,逢八进一 十六进制介绍:用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称作十六进制。
不同进制的书写格式 十进制:Java中,数值默认都是10进制,不需要加任何修饰。 二进制:数值前面以0b开头,b大小都可以。 八进制:数值前面以0开头。 十六进制:数值前面以0X开头,x大小写都可以。 注意:以上内容是jdk7版本之后才被支持。
进制转换
任意进制到十进制的转换
公式:系数基数的权次幂相加 系数:每一【位】上的数 基数:几进制,就是几 权:从数值的右侧,以0开始,逐个+1增加 例如:0b100 拆解:0b为二进制标识 系数:1 0 0 基数:2(因为当前数值是二进制) 权:从右侧开始,以0为编号,逐个加1 套入公式:系数基数的权次幂相加 0 --- 0 02^0=0 0 --- 1 02^1=0 0 --- 2 0*2^2=4 结果:0+0+4=4
十进制到二进制的转换 公式:除基取余 使用源数据,不断的除以基数(几进制,基数就是几)得到余数,直到商为0,再将余数倒着拼接起来即可。 需求:将十进制数字11,转换为2进制。 实现方式:源数据为11,使用11不断的除以基数,也就是2,直到商为0.
快速进制转换法
8421码: 8421码又称BCD码,是BCD代码中最常用的一中 BCD:(Binary-Coded Decimal)二进制码十进制数 在这种编码方式中,每一位二进制值的1都是代表一个固定数值,把每一位的1代表的十进制数加起来 得到的结果就是它所代表的十进制数。
二进制快速转十进制
公式:系数*基数的权次幂相加
可将2进制数值直接套入其中,0所对应的值不取,1对应的值取出并相加
例如:二进制0b1101
1 --->8
1 --->4
0 不取
1--->1
相加:8+4+1=13 二进制0b1101,转10进制后,结果为13
二进制快速转八进制
八进制:将三个二进制位看为一组,再进行转换
原因:八进制逢八进一,三个二进制位最多可以表示111,也就是数值7,如果出现第四位,就超范围了
需求:将60的二进制0b111100转换为八进制
二进制快速转换十六进制
十六进制:将四个二进制位看为一组,再进行转换
原因:十六进制逢十六进一,四个二进制位最多可以表示1111,也就是数值15,如果出现第五位,就超范围了
需求:将60的二进制0b111100转换为十六进制
原码反码补码
介绍:计算机中的数据,都是以二进制补码的形式在运算,而补码则是通过反码和原码推算出来的。
原码(可直观看出数据大小)(看数据)
就是二进制定点表示法,最高位为符号位,【0】表示正,【1】表示负,其余位表示数值的大小。
通过一个字节表示+7和-7,代码:byte b1=7;byte b2 = -7;
一个字节等于8个比特位,也就是8个二进制位
0(符号位) 0000111
0(符号位) 0000111
反码(转数据)
? 整数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码 (数据以该状态进行运算)(运算数据)
? 正数的补码与其原码相同;负数的补码是在其反码的末位加1。
位运算
位运算符介绍
1、位运算符指的是二进制位的运算,先将十进制数转换成二进制后再进行运算。
2、在二进制位运算中,1表示true,0表示false。
&位与 :遇false则false,遇0则0
|位或 :遇true则true,遇1则1
^位异或 : 相同为false,不同为true
~ 取反:全部取反,0变1,1变0 (包括符号位)
<< 有符号左移运算,二进制位向左移动,左边符号位丢弃,右边补齐0
运算规律:向左移动几位,就乘以2的几次幂
>> 有符号右移运算,二进制位向右移动,使用符号位进行补位
运算规律:向右移动几位,就是除以2的几次幂
>>>无符号右移运算符,无论符号位是0还是1,都补0
运算符的特点
一个数,被另外一个数,异或两次,该数本身不变
以上就是我的分享,有什么不对的地方,欢迎在评论区中指出,我定会虚心修改!