Java基本数据类型 及 位操作

最近在笔试时,经常遇到一些与基本数据类型有关的问题,比如他们的长度

所占的字节数目啊,以及相应的为操作啊,所以,这次来做一下总结 ;

  四种基本整数数据类型 : 所占字节数目按 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

   

猜你喜欢

转载自kainever7.iteye.com/blog/2207171