一:进制
对于整数,有四种表示方式
二进制:0、1,满2进1,以0b或者0B开头(零b,数字零)
十进制:0-9,满10进1
八进制:0-7,满8进1,以数字0开头
十六进制:0-9及A-F,满16进1,以0x或者0X开头,A-F不区分大小写
二:正数与负数的存储
我们都知道数据在计算机中以二进制存储。那么到底如何表示,以及的得到一个计算机存储形式的数据如何转化为我们熟悉的十进制呢?
正整数转化为二进制数即可
那么正小数如何转换与存储呢?
那么会遇到两种情况:
1、乘2结果超过1,即结果为1.*****,那么取小数继续乘2
2、永远得不到一个整数,这就涉及到了float与double的精确度,想了解相关知识的网友可以查找计算机基础的相关书籍(大学生的话,推荐中国慕课网南京大学的计算机基础课程)。
负数的存储:
不理符号,将数字转化为二进制数(源码),按位取反(反码),最后加一(得到补码),就得到了负数的计算机存储方式。即负数在计算机中以补码形式存储。
//举一个简单的例子,-1的转化,假设为8bit(一个字节为8bit)
//1、0000 0001 (---源码)
//2、1111 1110 (---反码)
//3、1111 1111 (---补码)
那么我们如何将计算机的数转化为我们熟悉的数字呢?
我们先了解一下基本的规则,二进制的首位数字1代表负数,0代表正数。
我们还是以-1(1111 1111)举例子,
-1*2的7方+1*2的6方+1*2的5方+1*2的4方+1*2的3方+1*2的2方+1*2的1方+1*2的0方=-1;
所以我们一般得到一个类型可以表示的最大值(以一个字节为例)
0111 1111=1*2的7方-1
那么越界时,就变为了
1000 0000=-1*2的7方
所以byte类型的范围为(-128-127)
//如果对负数取模,可以把模数负号忽略不记,如:5%-2=1;
System.out.println("5+5="+5+5);//5+5=55 --输出结果
int x=4;
x*=4+5;//x=36;先计算后面的结果再相乘赋给x
三:运算符
instanceof关键字 //检查是否是类的对象
"Hello" instanceof String //true;
位运算符是直接对二进制数进行操作,速度很快,但是不利于程序员编写程序。
ps:<<< 与>>>是逻辑运算符,缺位直接补0即可