Java-二进制
2016-04-01 19:56
323 查看
二进制
什么是二进制?1)逢2进1的计数规则,数字:0,1.权:1,2,4,8….
2)只要能够支持计数,就能够支持任何的数学运算
为什么使用二进制?
优点:使用2进制是计算机硬件成本最优的选择
缺点:与人的计数习惯不同
Java利用”魔术”手段支持了10进制,使使用者感觉Java支持了10进制
二进制的应用
1)进制转换
*因为进制都是用于计数,可以表示相同数字.例:255(10)=11111111(2);
*10进制转2进制的转换规律:2进制的每个数字乘以权的和数值就是对应的10进制数
*2进制转10进制的转换规律:减法(减去比它小的最大的2进制数字,依次递减,比差大就是1否则就是0).除法(除2倒取余数)
2)补码
*是一种算法,利用固定数位2进制的周期变化现象,将大数当负数使用
规定高位为1的数作为负数使用,称为补码 例:1111,1110,1101…
*Java内部的数字全部是补码
*补码算法利用正数表示负数,节省了硬件成本
*Java在parseInt()(输入时将10进制编译成2进制);toString()(输出时将2进制翻译成10进制)方法中封装了补码算法,在数据输入输出的时候自动调用,自动化支持补码
*补码规律:取反对称规律—公式:~n+1=-n(一个数取反再加1正好等于它的相反数,去掉最大值和最小值.例:-5取反是4 加1是5 -5的相反数)
*溢出规律:补码不支持超范围计算,超范围计算自动溢出:n+(max+1)*2=n,n-(max+1)*2=n
*注意:Java中byte short 是利用int模仿的,byte和short计算结果是int
3)2进制运算
*Java中移位运算永远高于乘法运算
*2进制的基数是2,10进制的基数是10
*移位运算的用途:移位运算与位运算配合,用于对整数进行拆分和合并
运算符:(>>>):无符号右移位运算,也叫逻辑右移,无论是正数还是负数,高位都补0
(<<):左移位运算,也叫数学左移
*计算规则:每个2进制数字向左移动,低位(最后一位)填充0
数学意义:引子—10进制中小数点向右移动一次,数字变为原数基数(10)—即:小数点不动,数字向左移动一次,2进制中左移n位,数字变为原数*(基数的n次幂),例:int a=100; int b=a<<1; b=100*2=200
(>>):右移位运算,也叫数学右移
*为了保持符号不变(正数移动以后还是正数,负数移动以后还是负数),负数高位补1,正数高位补0
*注意:运算结果符合数学除以2规律,负数右移位,在发生小数时,向小方向取整
*2进制右移n位,数字变为原数/(基数的n次幂)
~:取反运算
&:and 与运算(逻辑乘法)
*运算规则:将俩个操作数按位对齐,每个位之间进行乘法,称为与运算
例:int a=100,b=15; int c=a&b; //c=4—0100—100的2进制表示后4位数
*用途:用于截取一个数的特定位数
|:or 或运算(逻辑加法)
*计算规则两个数对齐上下数字进行逻辑加法,可以用于将byte合并为int
4)16进制
*16进制是2进制的缩写形式:书写2进制
*16进制数组:0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(每4位2进制,是一位16进制)
5)文字的编码
*将char类型拆分为byte数据,称为文字的编码,将byte数据合并为char数据称为文字解码
*UTF-16BE:支持65535个字符,英文浪费一半空间,每个字符固定字节码
UTF-8:支持10万+字符,采用变长编码1-4字节,根据字符大小来确定其字节码,英文1字节,中文3字节,是国际化最优编码
GBK:中国标准,支持2万+字,变长编码1-2字节,英文1个字节,中文2个字节,无其他国家,是中国本地化最优编码
相关文章推荐
- Java for Web学习笔记(十八):Session(2)Session的使用
- Java 正则表达式的匹配
- 像Maven一样构建java项目的目录,更好的管理java工程的源码
- java基础知识总结(二)
- java异常处理
- 跟着柴毛毛学Spring(3)——简化Bean的配置
- 跟着柴毛毛学Spring(3)——简化Bean的配置
- java集合总结
- 三句java语句连接到jsp文件的作用
- IT十八掌作业_java基础第26天_Java基础总结/虚拟机基础
- IT十八掌作业_java基础第25天_NIO
- IT十八掌作业_java基础第24天_NIO
- [Java]常用虚拟机参数
- Java虚拟机相关知识(2)—对象的创建
- 你不知道的Spring配置文件
- java的重写、重载、覆盖的差别
- JDK自带XML和java对象相互转换
- Java实现银行卡号的校验
- java volatile变量
- java抽象类