这个问题很有意思啊,提问者的问题是:
对于十进制的为什么不经过unsigned int,直接从int跳到long;按理说它应该像八进制与十六进制一样,从小到大逐一选取。
其实这个是不对的,因为不经过unsigned int才是正常的,反之八进制和十六进制表达式没有跳过这个才是不正常的。
这是因为我们用16进制或者8进制的时候,更多是为了位运算,例如int是16位的,那么0xFFFF就用int装不下,这样就会变成32位的long,变成0x0000FFFF,很显然这是一种浪费,因为位运算根本用不着这么多位,譬如说我们要把x的高八位和y的低八位组合在一起,一般是这样写:
(x&0xFF00)|(y&0xFF)
因为int是16位的,就装不下0xFF00的正数,就必须升位成long,结果就会变成:
(x&0x0000FF00)|(y&0xFF)
最后得到的结果就莫名其妙变成了long型的。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有