专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

java不支持无符号整数_java

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 20:23:17       共计:3581 浏览

java不支持无符号整数?

问出这个问题来说明你这个C程序员是不合格的。

你只知道C里有"unsigned"类型,却不知道这种数据的存储方式。

事实上,不论unsigned还是signed,整型数据的存储方式都是完全一样的,都是补码表示法,是不是signed无关,跟±运算也无关。

比如简单一点,一个8位整数,unsigned是0-255,signed是-128~127。两者的存储方式完全相同,±运算也完全相同。区别是你看数据时的理解方式,比如8位全1,unsigned 理解为255(再+1变成0),而signed理解为-1(再+1也是0)。这就是补码表示法的精髓,有无符号无差别,甚至加减法也几乎无差别:补码表示下,减法就是取反+1。你可以在C或java代码里验证:a-b,和a+(~b)+1,二者是一样的。

回到题主的问题,当然先要明确程序员需要unsigned类型的原因和用途,不过据我的经验,通常都只是用来计数,也只涉及到加减法和比较(比大小就是减法)。一般来说,直接改成signed就好,加减法照常使用,唯一的,在做比较时,需要稍稍处理一下,比如:

两个整数a,b用int存储(实际是unsigned,可能超231,此时int会理解为负数),两者比大小不要直接if(a<b),要改成:

int c=a-b;

if(c<0)

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:jetty和netty有啥区别_java | ·下一条:你觉得我的这段Java代码还有优化的空间吗_java

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有