java 类型与移位运算
2015-09-19 20:34
363 查看
1.boolean 1bit 只能取值true or false
byte 1byte
char 2byte 专为unicode设计,包括全球几乎所有语言的字符,中文字符在64000左右
short 2byte
int 4byte Integer.toBinaryString(toHexString) Inteter.parseInt(String)
long 8byte Long 也类似 Long.parseLong(String)
float 4byte
double 8byte
2.java 均为有符号整数,没有无符号整数表示
3.在计算机中,负数以其正值的补码形式表达
举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
先取1的原码:00000000 00000000 00000000 00000001
得反码: 11111111 11111111 11111111 11111110
得补码: 11111111 11111111 11111111 11111111
注意:((long)13<<40)+(3<<30)计算的结果
4.java中有三种移位运算符
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐
在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。
byte 1byte
char 2byte 专为unicode设计,包括全球几乎所有语言的字符,中文字符在64000左右
short 2byte
int 4byte Integer.toBinaryString(toHexString) Inteter.parseInt(String)
long 8byte Long 也类似 Long.parseLong(String)
float 4byte
double 8byte
2.java 均为有符号整数,没有无符号整数表示
3.在计算机中,负数以其正值的补码形式表达
举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
先取1的原码:00000000 00000000 00000000 00000001
得反码: 11111111 11111111 11111111 11111110
得补码: 11111111 11111111 11111111 11111111
注意:((long)13<<40)+(3<<30)计算的结果
4.java中有三种移位运算符
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐
在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。
相关文章推荐
- JAVA中变量和常量的理解
- javaweb转发和重定向的区别
- 使用NetBeans实现表格的增删改
- JAVA程序注解的理解
- 关于JDK的终极环境变量的配置
- Java对象表示方式1:序列化、反序列化和transient关键字的作用
- 关于创建子包(package)的问题
- 第一阶段快结束了。。。。
- Java面向对象的继承
- 徒手用Java来写个Web服务器和框架吧<第一章:NIO篇>
- eclipse转android studio须知以及一些注意事项(包括android studio安装以及配置)
- Java异步事件:轮询与中断
- java.lang.UnsatisfiedLinkError: Couldn't load BaiduMapSDK_v3_2_0_15 from loader dalvik.system.PathCl
- java中基本数据类型和引用数据类型的区别?
- java.util.Stack类简介
- java web (登陆注册界面)
- 在MyEclipse中复制项目的时候要注意
- 使用JAVA将对象转换成JSON字符串
- 二叉树系列--层序遍历(java实现)
- 学习完Spring MVC体会