java弱签名视为未签名_签名与无符号整数 - javail的个人空间 - OSCHINA - 中文开源技术交流社区...

我是否正确地说有符号和无符号整数之间的区别是:

无符号可以保持较大的正值,而不是负值。

无符号使用前导位作为值的一部分,而带符号版本使用最左侧位来标识数字是正数还是负数。

有符号整数可以包含正数和负数。

还有其他差异吗?

#1楼

是的,无符号整数可以存储大值。

不,有不同的方式来显示正面和负面的价值观。

是的,有符号整数可以包含正值和负值。

#2楼

在嵌入式系统上编程时,必须使用无符号整数。 在循环中,当不需要有符号整数时,使用无符号整数将节省设计此类系统所必需的安全性。

#3楼

C中的有符号整数表示数字。 如果a和b是有符号整数类型的变量,该标准将永远不需要编译器,这样使得表达式a+=b店,变成a比它们各自的值的算术和其他任何东西。 可以肯定的是,如果算术总和不适合a ,处理器可能无法将其放在那里,但标准不需要编译器截断或包装值,或者做任何其他事情,如果值为超过其类型的限制。 请注意,虽然标准不要求它,但允许C实现使用有符号值捕获算术溢出。

C中的无符号整数表现为整数的抽象代数环,除了涉及对较大类型的转换或操作的场景外,它们是2的幂的一致模。 将任意大小的整数转换为32位无符号类型将产生对应于与整数mod 4,294,967,296一致的事物的成员。 从2中减去3得到4,294,967,295的原因是,将一些与3一致的东西添加到与4,294,967,295一致的东西将产生与2一致的东西。

抽象代数环类型通常是方便的东西; 不幸的是,C使用签名作为一个类型是否应该表现为环的决定因素。 更糟糕的是,无符号值在转换为较大类型时被视为数字而不是环成员,而小于int无符号值在对它们执行任何算术时将转换为数字。 如果v是uint32_t ,等于4,294,967,294 ,那么v*=v; 应该使v=4 。 不幸的是,如果int是64位,那么就不知道v*=v; 能做。

鉴于标准本身,我建议在需要与代数环相关联的行为的情况下使用无符号类型,并在想要表示数字时使用签名类型。 不幸的是,C以它的方式绘制了区别,但它们就是它们的本质。

#4楼

他只询问签名和未签名。 不知道为什么人们会在这里添加额外的东西。 让我告诉你答案。

无符号:它仅包含非负值,即0到255。

签名:它包含负值和正值,但格式不同

0到+127

-1到-128

这个解释是关于8位数字系统。

#5楼

一般来说这是正确的。 在不知道为什么要寻找差异的情况下,我无法想到签名和未签名之间的任何其他区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值