Java基本数据类型 及 位操作
2015-07-25 22:18
423 查看
最近在笔试时,经常遇到一些与基本数据类型有关的问题,比如他们的长度
所占的字节数目啊,以及相应的为操作啊,所以,这次来做一下总结 ;
四种基本整数数据类型 : 所占字节数目按 2^n增长..... 注意,计算计数范围时,最高位表示的符号位!
注意 : 如果超过了他们范围,怎么办,见例子!
剩下的就是 float , double , char , blooean !
容量小的类型自动转换为大的类型,数据类型按容量大小排序为:
byte, short, char < int < long <float < double
输出 :
负数的二进制表示 怎么计算的?
负数的二进制表示就为他的补码;
那么补码怎么求了,我们知道正数的原码, 补码 ,反码都是一样;
求负数的二进制表示,首先就得由相应正数的原码 按位取反 得到 反码 , 然后 反码 最后一位 +1 得到的结果就为补码,也就是它的二进制表示!
不如说,上面的 - 1 :
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码: 11111111 11111111 11111111 11111110
3、得补码: 11111111 11111111 11111111 11111111
详情可参考这篇文章 : http://www.cnblogs.com/aspnet2008/archive/2009/04/29/1446471.html
位操作
Java提供的位运算符有:左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。
这篇博文不错 : http://blog.csdn.net/xiaochunyong/article/details/7748713
所占的字节数目啊,以及相应的为操作啊,所以,这次来做一下总结 ;
四种基本整数数据类型 : 所占字节数目按 2^n增长..... 注意,计算计数范围时,最高位表示的符号位!
注意 : 如果超过了他们范围,怎么办,见例子!
剩下的就是 float , double , char , blooean !
容量小的类型自动转换为大的类型,数据类型按容量大小排序为:
byte, short, char < int < long <float < double
import java.util.Arrays; public class ByteTest{ public static void main(String[] args) { String s = "abcd"; byte[] bytes = s.getBytes(); System.out.println("s转换成字节数组 " + Arrays.toString(bytes)); System.out.println("二进制表示 " + Integer.toBinaryString(123)); System.out.println("十六进制表示 " + Integer.toHexString(12)); s = ""; for (int i = 0 ; i < bytes.length ; i++) { s += Integer.toBinaryString(bytes[i]); } System.out.println("s 装换成 bit " + s); String str = "abcd"; char c = str.charAt(0); int tmp = c; c = (char) (tmp + 1); System.out.println(c + " " + tmp); System.out.println("负数的二进制表示 " + Integer.toBinaryString(-1)); } }
输出 :
s转换成字节数组 [97, 98, 99, 100] 二进制表示 1111011 十六进制表示 c s 装换成 bit 1100001110001011000111100100 b 97 超过byte的范围后 -126 超过byte的范围后 -128 负数的二进制表示 11111111111111111111111111111111
负数的二进制表示 怎么计算的?
负数的二进制表示就为他的补码;
那么补码怎么求了,我们知道正数的原码, 补码 ,反码都是一样;
求负数的二进制表示,首先就得由相应正数的原码 按位取反 得到 反码 , 然后 反码 最后一位 +1 得到的结果就为补码,也就是它的二进制表示!
不如说,上面的 - 1 :
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码: 11111111 11111111 11111111 11111110
3、得补码: 11111111 11111111 11111111 11111111
详情可参考这篇文章 : http://www.cnblogs.com/aspnet2008/archive/2009/04/29/1446471.html
位操作
Java提供的位运算符有:左移( << )、右移( >> ) 、无符号右移( >>> ) 、位与( & ) 、位或( | )、位非( ~ )、位异或( ^ ),除了位非( ~ )是一元操作符外,其它的都是二元操作符。
这篇博文不错 : http://blog.csdn.net/xiaochunyong/article/details/7748713
相关文章推荐
- Java笔记
- MyEclipse Hibernate反向工程生成实体类
- Spring Data JPA 入门Demo
- 深入浅出java静态代理和动态代理
- 含中文的List列表按中文拼音排序的实现方式 Java
- eclipse插件汇总
- java文件写入
- java静态代码块
- JavaSE基础部分--(一)
- java大牛博客
- spring-boot 添加JSP页面功能
- Java框架篇---Mybatis 构建SqlSessionFactory
- JAVA笔记之数据与运算
- [java] 模拟QPS
- 学生成绩数组求学生排名
- springmvc ModelAndView 和 Model
- [java] 简单的ConcurrentHashMap
- eclipse 运行时提示找不到plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
- [java] 线程池
- JAVA笔记之环境配置