算法1.1课后问答及习题

Posted 切力

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法1.1课后问答及习题相关的知识,希望对你有一定的参考价值。

1. java bytecode

C/C++编译器把源代码编译成汇编代码,Java编译器把Java源代码编译成字节码bytecode。 
Java跨平台其实就是基于相同的bytecode规范做不同平台的虚拟机,我们的Java程序编译成bytecode后就可以在不同平台跑了。 
.net框架有IL(intermediate language),汇编是C/C++程序的中间表达方式,而bytecode可以说是Java平台的中间语言。

2. ints overflow问题

int溢出 java不会报错 会显示一个错误的值。

3. What is the value of Math.abs(-2147483648)?  (2^31 = 2 147 483 648)

the answer is -2147483648.

reason: Java的int的范围是 Integer.MIN_VALUE(-2^31) 到 Integer.MAX_VALUE(2^31-1)。-Integer.MIN_VALUE 的值大于 Integer.MAX_VALUE ,无法正确被Java的int表示。而 -Integer.MIN_VALUE 在32位的范围内的补码表现形式正好跟 Integer.MIN_VALUE 一样   (该答案转自知乎)

举个栗子,Java中32位的int,
最大值为:2147483647, 二进制:01111111111111111111111111111111
最小值为:-2147483648,二进制:10000000000000000000000000000000

而二进制正负转换的方式是反码+1,反码就是正码的所有位数的0和1对换。
-2147483648的二进制正码:10000000000000000000000000000000
-2147483648的二进制反码:01111111111111111111111111111111
-2147483648的二进制反码+1:10000000000000000000000000000000

搞了半天又回来了,所以Math.abs(-2147483648) 等于-2147483648。

关于补码的一点知识补充:https://www.douban.com/note/223507364/ 转自豆瓣 作者百脑

解决完这道题才算真正懂得补码:https://www.zhihu.com/question/28685048 转自知乎

 

以上是关于算法1.1课后问答及习题的主要内容,如果未能解决你的问题,请参考以下文章

Java编程思想第4版官方完整版及官方习题课后答案(code和pdf)

数据结构(C语言版)课后习题全套完整答案及详解 (答案由李冬梅老师撰写)

《python编程:从入门到实践》课后习题及答案

计量经济学 第四版 课后答案 李子奈 潘文卿 版 课后 练习题答案 高等教育出版社 课后习题答案

电子技术基础模拟部分第六版课后答案康光华

编程精品教材:MATLAB程序设计与应用(第3版) 课后答案 刘卫国版 课后习题答案解析