OJ题[选择题] -- "进制转换"

在java中以0x开头的数表示十六进制(如0x1, 0xa), 其中以字母a~f表示10~15的数字

如:0xf表示十进制数15

在java中以0开头的数表示八进制(如012,03),

没有前缀的数才表示十进制数(如123,4)

 

16进制转化为10进制:

如:123: 3*16^0+2*16^1+1*16^2

对应位数乘以16的对应次方

一个例子:

变量a是一个64位有符号的整数,初始值用16进制表示为:0Xf000 0000 0000 0000 变量b是一个64位有符号的整数,初始值用16进制表示为:0X7FFF FFFF FFFF FFFF。则a-b的结果用10进制表示为多少?

解答: 遇到带FFFF的题可以考虑为其+1

a: 16进制: 0Xf000 0000 0000 0000

b: 16进制: 0X7FFF FFFF FFFF FFFF

f表示十进制数15.

0X7(15个F) + 1 = 0X8(15个0)

所以:0X7(15个F) = 0X8(15个0) - 1

a-b = 0Xf(15个0) - (0X8(15个0) - 1)

      = 0Xf(15个0) - 0X8(15个0) + 1

      = 0X7(15个0) + 1

      = 0X7000 0000 0000 0000

将16进制转化为10进制:

0X7000 0000 0000 0000= 1*16^0+7*16^15

因为7*16^15= 7*2^(4*15)

                    = 1+ 7*2^60

                    =1+1*2^60+2*2^60+4*2^60

                    =1+2^60+2^61+2^62

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值