栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

了解Java无符号数字

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

了解Java无符号数字

Java实际上没有无符号原语。

值127实际上由“ 01111111”表示,第一位是符号(0为正)。

一个无符号字节将能够保存0到255的值,但是127是有符号字节的最大值。由于一个字节有8位,有符号的一个消耗1来保存符号。因此,如果要表示大于127的值,则需要使用具有更大位数的更大类型。较大的类型也有一个符号保留位,但是它至少有8位用于实际值,因此可以表示值255。

话虽如此,您可能应该避免使用byte和short,因为它们存在问题。您会注意到我将结果强制转换为short,因为运算符实际上返回了int。您应该只在int和long中坚持使用Java,因为它们实现得更好。

编辑:由于符号位是short的第一位,所以AND运算符使其无符号,然后将保存字节值的8位复制到short的后8位。因此,如果您有一个负数,则第一个为1的位(这意味着它为负数)实际上成为该值的一部分。短路将始终为正,因为其符号位处于受短路影响的2的幂的2的高位。

 byte:  10101101         ||||||| <- actual valueshort:     0000000010101101 ||||||||||||||| <- actual value

编辑2:但是请注意,由于负值使用二进制补码表示,因此该值可能不是您期望的值。所有正值都保持不变。
但是-128 = 0x10000000将变为128
-127 = 0x10000001将变为129
依此类推,直到-1 = 0x11111111将变为255




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574231.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号