码迷,mamicode.com
首页 > 其他好文 > 详细

数据转换的理解

时间:2016-05-06 19:20:29      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

不同类型的数据进行转换的时候,就是将低位复制给对象,

比如说long转int就是低32位给int,这样,如果高32位有数据,则该部分的数据丢失。

若int转long,则是int 32位给long的低32位,高位补0,如int是负数,则高32为的最高位1,其余补0;

long转换为int后,int里的数据是long的高32位还是低32位的?

所以说: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!