1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > java不支持无符号整数 – java – 前端

java不支持无符号整数 – java – 前端

时间:2021-11-02 05:27:38

相关推荐

java不支持无符号整数 – 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,可能超2³¹,此时int会理解为负数),两者比大小不要直接if(a<b),要改成:

int c=a-b;

if(c<0)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。