java中的1l_Java中 -1l<<<1是多少?

答案是:9223372036854775807  其实回答就是Long型的最大值即可!

数字9223372036854775807等于263 − 1,参考:

http://zh.wikipedia.org/wiki/9223372036854775807

数字9223372036854775807写成十六进制是7FFF,FFFF,FFFF,FFFF16,这是计算机运算中最大的64位带符号整型,对于现代计算机上所运行的许多编程语言而言,这个数字也是长整型(long,long int,long long int或bigint)变量所能赋的最大值。在运行程序时出现该数字一般代表出现错误,例如条件溢出或数值丢失等。

此数字同时也是64位处理器采取带符号扩展内存寻址(x86-64架构称此为扩展标准型寻址)所能使用的最大正符号地址。由于该数字是一个奇数,因此出现该数字往往意味着内存地址的错误偏离。在调试模式下此数字还被用作未分配内存空间的默认初始化值。

在Unix等操作系统所使用的C标准库中,头文件Time.h定义了数据类型time_t,该类型通常由32位或64位带符号整型实现,主要用于记录自Unix纪元1970年1月1日0时0分0秒(UTC)到目前为止的秒数。采用32位time_t的系统会出现所谓2038年问题,因此很多新的程序实现都选择迁移到64位版本,此版本的time_t最大的取值就是9223372036854775807(263 − 1),足够记录到2900亿年后的292277026596年12月4日15时30分08秒(UTC)。

其它系统采用64位带符号整型记录自某个纪元到目前为止的滴答数(tick),一些系统(如Java标准库)约定1次滴答等于1毫秒,这样约定的时间系统可以使用到大约2.92亿年后;另一些系统(如Win32)约定1次滴答等于100纳秒,此系统所能覆盖的时间范围是纪元前后29227年。

这题考查的知识点很多:

<<

-1的2进制是1111 ... ...

bf408007bfd89d42e3b36a41900236e9.png

3d0706ce4aef061afa1f1443119fd9f3.png

右移一位:

2dada5ec15047a1df287310e619252d7.png

也就是:

f59f9425e82e589f68d3af8e94659a51.png

关于Java中的位移:

《Java核心技术-基础知识(第8版)》

d48641d7c178767faafed4618f5140f2.png

《Java 7入门经典》

775be6def7f14659639ea41003ade114.png

9bef008ce0edfd15a6aa0130ef6e92c5.png

af78ed62becf6961b4469c4336cd2e47.png



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值