进制的基础知识
进制,是人们规定的一种进位方式
表示某一位置上的数,运算时逢x进1
常见的进制 2 8 10 16
为什么学进制??
计算机在底层运算的时候,都是以进制的进行存储运算的,便于我们深刻 理解底层的原理
在Java当中都是默认数值是十进制,不需要加任何修饰
二进制以0b开头 b大小写也是都可以的
八进制以0开头
十六进制以0x开头,x大小写都可以,书写的时候是用进制形式最后都是打印出来都是以十进制打印出来
以上的内容都是在jdk7版本以后才支持
进制的转换
快速进制转换法 8421码
8421码又称BCD码,是BCD码中最常用的一种
/
/ public static void main(String[] args) {
System.out.println(0b10);
System.out.println(010);
System.out.println(0xa);
}/
/
二进制快速转换成十进制
二进制快速转换为八进制,将三个二进制为看作一组,如果是四组就为15超过了
二进制快速转换为16进制 将四个二进制为看作一组,如果是第五组就超过范围,前四个为一组相加 后四组为一组相加,二者拼在一起就是最后的值****
学习原码,反码,补码原因
byte -128-127
计算机中的数据都是以二进制补码的形式在运算的,而补码是通过原码,反码推算出来的
原码:直观看出数据大小 0为整数,1为负数 其余表示数值大小
反码:是一个为了算出补码的一个中间变量,正数的反码与其原码相同,负数的的反码对其原码逐位取反,但是符号位不变,正数的反码与原码相同
补码,正数的补码还是原码本身,负数的补码就是末尾+1得到的
位运算
位运算指的是二进制运算,先将十进制转换为2进制后再进行运算
在二进制运算中1表示true 0表示为false
位移运算符
<<有符号左移运算,二进制位向左移,左边符号位丢弃,右边补齐0 规律:向左移动几位,就是乘以2的几次幂
>>有符号右移运算,二进制位向右移动,使用符号位进行补位(如果是正数就用0 负数就用1) 规律:向右移动几位,就是除以2的几次幂,若有小数就取整数部分
>>>无符号右移运算,无论符号位是0还是1都补0 无论符号是0还是1都用0补位
&两个都为1才1 有0则0 位或 |遇到true 为true ^异或相同为0不同为1 取反,全部取反 (包括符号位)~
异或运算的特点:
一个数被另外一个数异或两次,该数本身不变