标签:
不同类型的数据进行转换的时候,就是将低位复制给对象,
比如说long转int就是低32位给int,这样,如果高32位有数据,则该部分的数据丢失。
若int转long,则是int 32位给long的低32位,高位补0,如int是负数,则高32为的最高位1,其余补0;
所以说:int转unsigned int也就是直接把int的32位给unsigned int。
换而言之,也就是把 bit 给 对方。
至于输出什么结果,有系统更具类型判断。
实例:
int -1 的二进制表示方法是11111111111111111111111111111111;因为是int类型,所以系统才会判断为-1;
unsigned int 4294967295的二进制表示方法也是11111111111111111111111111111111;因为是unsigned int类型,所以系统才会判断为4294967295;
结论:
说到底,数据类型在底层的表现就是 二进制 。比如int有32个bit,而long有64个bit。
java和c的类型转换的时候,在意的是数据类型的bit数。
可以将java的byte和c的uint8_t对应起来;(typedef unsigned char uint8_t)。
虽然java的byte是有符号的,而uint8_t是没有符号的,但是没有关系,其二进制的表示方式都一样,需要注意的是 解析 这些数据的时候,知道有区别就好了,注意点,就没有问题了。
标签:
原文地址:http://www.cnblogs.com/H-BolinBlog/p/5466447.html