注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

HT·生活

123

 
 
 

日志

 
 

java中long,short以及int类型的变换,以及unsigned处理  

2015-11-19 10:37:24|  分类: Java |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天用java实现了一下leetcode上的reverse bits的问题,里面的unsighed问题有点儿恶心。首先说明一下java里面没有unsighed int这种说法,也就是说java本身对二进制操作支持没有c++这些完善。但是为了处理一些unsigned输入输出的问题,办法总能想出来的来。下面看下java中各种类型二进制的范围

character -128~+127  对应的0~127的16进制的为0x00~0x7f,然后剩下的到0xff就是表示的-1~-128    1字节

short -32768~+32767 对应的正数部分的16进制为0x0000~0x7fff,然后剩下的到0xffff就是-1~-32768 2字节

int     -2147483648~+2147483647 对应的正数部分16进制 0x00000000~0x7fffffff,剩下的就是负数部分 4字节

long -9223372036854775808~+9223372036854775807 
对应的正数部分16进制为0x0000000000000000L~0x7fffffffffffffffL,剩下的部分是负数部分               8字节

写代码的时候一定要加上L否则会默认为是int的,这样会被坑的,关于unsigned int向long的转换

public long int2long(int n){
long num = n&0X0ffffffffL;//截取低位字节,一定要保留L
return num;
}

关于unsigned short 向int的转换,和上面的函数是类似的

public long short2int(short n){
int num = n&0X0ff;
return num;
}

同理,long向int转换的时候会截取低位的,高位字节会被去掉,所以一般不这么干。


  评论这张
 
阅读(40)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017