转自:http://hi.baidu.com/jrckkyy/blog/item/9c813735b614a30891ef39a2.html
在Java中,不存在Unsigned无符号数据类型,但可以轻而易举的完成Unsigned转换。 方案一:如果在Java中进行流(Stream)数据处理,可以用DataInputStream类对Stream中的数据以Unsigned读取。 Java在这方面提供了支持,可以用java.io.DataInputStream
类对象来完成对流内数据的Unsigned读取,该类提供了如下方法: 方案二:利用Java位运算符,完成Unsigned转换。 正常情况下,Java提供的数据类型是有符号signed类型的,可以通过位运算的方式得到它们相对应的无符号值,参见几个方法中的代码: public int getUnsignedByte (byte data){ //将data字节型数据转换为0~255 (0xFF 即BYTE)。 public int getUnsignedByte (short data){ //将data字节型数据转换为0~65535 (0xFFFF 即 WORD)。 public long getUnsignedIntt (int data){ //将int数据转换为0~4294967295 (0xFFFFFFFF即DWORD)。 灵活的运用这些技法,根本不存“二进制在Java中得不到全面支持”的论断!
http://hi.baidu.com/topjava/blog/item/723fed881df97299a5c2722b.html
java中只有 int型 而没有 unsign integer 和 signed之分。 java,c,c++ 语言之间基本数据类型的比较 收藏 当要进行底层移植的时候肯定会遇到这些问题。特整理了下。
在JAVA中一共有八种基本数据类型,他们分别是 byte、short、int、long、float、double、char、boolean 整型 其中byte、short、int、long都是表示整数的,只不过他们的取值范围不一样 byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) long的取值范围为(-9223372036854774808~9223372036854774807),占用8个字节(-2的63次方到2的63次方-1) 可以看到byte和short的取值范围比较小,而long的取值范围太大,占用的空间多,基本上int可以满足我们的日常的计算了,而且int也是使用的最多的整型类型了。 在通常情况下,如果JAVA中出现了一个整数数字比如35,那么这个数字就是int型的,如果我们希望它是byte型的,可以在数据后加上大写的 B:35B,表示它是byte型的,同样的35S表示short型,35L表示long型的,表示int我们可以什么都不用加,但是如果要表示long型 的,就一定要在数据后面加“L”。 浮点型 float和double是表示浮点型的数据类型,他们之间的区别在于他们的精确度不同 float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节 double 1.797693e+308~ 4.9000000e-324 占用8个字节 double型比float型存储范围更大,精度更高,所以通常的浮点型的数据在不声明的情况下都是double型的,如果要表示一个数据是float型的,可以在数据后面加上“F”。 浮点型的数据是不能完全精确的,所以有的时候在计算的时候可能会在小数点最后几位出现浮动,这是正常的。 boolean型(布尔型) 这个类型只有两个值,true和false(真和非真) boolean t = true; boolean f = false; char型(文本型) 用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容 字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加' ',比如 '1'表示字符'1'而不是数值1, char c = ' 1 '; 我们试着输出c看看,System.out.println(c);结果就是1,而如果我们这样输出呢System.out.println(c+0); 结果却变成了49。 如果我们这样定义c看看 char c = ' \u0031 ';输出的结果仍然是1,这是因为字符'1'对应着unicode编码就是\u0031 char c1 = 'h',c2 = 'e',c3='l',c4='l',c5 = 'o'; System.out.print(c1);System.out.print(c2);System.out.print(c3);System.out.print(c4);Sytem.out.print(c5); String 在前面我们看到过这样的定义: String s = "hello"; System.out.println(s);跟上面的5条语句组合起来的效果是一样的,那么String是个什么呢?String是字符串,它不是基本数据类型,它是一个类。
1.整型数据类型
2.无符号整数类型
3.整型常量
4.字符数据类型 5.字符变量 6.浮点型数据类型 浮点型的字节长度、精度、数量级范围和输出输入格式表
7.浮点型精度 8.浮点型的存储方式
C++基本数据类型有字符型(char)、整数类型(int)、浮点型(float)、双精度型(double)和无值类型(void),下表给出各种基本类型和内存中的位数和表示数值的范围(对于字符型存储的是ASCII码): 基本数据类型
类型名前可以加修饰符(void类型除外),修饰符有 signed(带符号的)、 unsigned(无符号的)、 short(短的)和 long(长的)。signed 和 unsigned 用于字符型或整型,short 和 long 可用于整型,还可用于双精度型,如下表所示: 基本数据类型和修饰符
当用 signed 、unsigned 、short 和 long 修饰 int 时,int 可省略。 字符型实际上是一个字节的整型 ,浮点型和双精度型表示实数。 注:不同编译系统,整数的存储长度不同。对于16位的编译系统,int为2字节;而对于32位的编译系统,int为4字节。可以用sizeof运算符测试。如: cout<<sizeof(int)<<endl; 输出结果是字节数。 |
|