blue
2020 年9 月 27 日 12:40
42
所在小组:第一组
组内昵称:bluewhale
心得体会:
三种编码方式:无符号、补码、浮点数。分别对应自然数、整数、实数
二进制的整数运算构成一个阿贝尔群,满足整数满足交换律、结合律等,可能溢出
浮点数不一定满足交换律,结合律,因为它只是近似表示
寻址和字节顺序
多字节对象连续存储,对象的地址是所使用字节的 最小地址 。如 4 字节的 int 变量,其地址是第一个字节的地址。
大端法与小端法
按照有效 字节 在内存中的存储顺序,可以分为 大端法和小端法 :大端法从高位到低位存储,小端法从低位到高位存储。比如某个 int 型整数的值为 0x01234567,存储在 0x100~0x103 的内存地址上。
浮点数比较大小
将浮点数的位级表示看作无符号数,直接比较。负数需要简单的额外处理。
浮点运算
浮点加法不具有结合性,因为可能溢出、丢失精度。
乘法同理,可以交换,不可以结合,也不具有分配性。但是乘法运算满足 单调性 ,即只要 a、b、c≠NaN,那么如果 a≥b,就一定有 a*c≥b*c
。
浮点数的舍入
浮点数相当于是一种近似表示。当某个数字的有效位数超过浮点数所能表示的最大精度时,需要舍入。
舍入共分为 3 种情况:进一、舍去、向偶数舍入。具体采用哪种舍入规则,是根据被舍掉的位与 中间值 的大小关系确定的。
中间值:先以十进制为例。比如 5.23500,保留两位小数。那么中间值就是 XX.YY50000…0,即第三位是 5,之后全是 0。
按照浮点数的舍入规则,5.23500 被舍掉的位 等于 中间值,需要向偶数舍入,得到 5.24;5.23510 被舍掉的位 大于 中间值,需要进一,得到 5.24;5.23410 被舍掉的位 小于 中间值,需要舍去,得到 5.23。
所在小组
第七组
组内昵称
Hayden
心得体会
首先对于任何数据都有范围有了新的体会,数据相加和想乘要注意不要溢出,编码过程中要注意数据溢出bug,错误容易出现且很难查找。
原码、反码、补码是计算机编码的三种方式。反码是为了解决减法问题而产生的,但是反码表示0有两种编码方式,于是便诞生了补码,正数的补码等于本身,负数的补码等于反码加1。计算机中只能存储0与1,计算机的加减乘除通过与、或、非异或来实现,在计算机设计逻辑电路高低电位分别代表0与1也比较好设计。
按照有效 字节在内存中的存储顺序,可以分为 大端法和小端法 :大端法从高位到低位存储,小端法从低位到高位存储,在不同的系统中,可能存在不同的存储方法,在网络编程过程中,网络传输也要注意大小端问题。
浮点数只能无限接近,不一定能存储准确的值,计算机中只能存储0和1,比如1/3只能无限接近,在支付系统中一定要注意精度,可能会存在精度丢失问题。
所在小组
第2组
组内昵称
�
心得体会
1.信息在计算机中的表达:
底层:0 和 1 表示
逻辑:有符号数、无符号数、原码 和 补码
2.简单了解:整数、浮点数,实现原理和程序中运算规则。在后续开发中要注意不同类型的数,在发生转换时、运算时的形式(计算机中),尽量避免由于数的某些错误而导致整个程序产生比较奇怪的结果
例如:结算业务中的使用了浮点数(大数)进行乘法运算,就会导致精度丢失发生资金损失(计算错误)
3.程序开发中,要注意和避免溢出,做好边界条件校验
溢出是什么:就是水杯只能装100ml水,超出就漫出来了
溢出的危害:程序崩溃、结果错误,还可能被利用,然后运行恶意代码
所在小组:第三组
组内昵称:Hector
心得体会:本周忙于转正,国庆有时间还得在仔细读一读~
第 2 章 信息的表示和处理
第 2 章主要讲述了如何在计算机上表示信息、处理信息等。在日常开发中使用数据时,要格外注意数据的类型和范围,还要考虑跨平台性,防止代码出现一些奇奇怪怪的bug。
2.1 信息存储
计算机可能没有产生预期等结果,但是至少它是一致的。
二进制、十进制、十六进制的表示及转化。
位运算(~、&、|、^) 与逻辑运算( ||、&&、!)
移位运算:左移、右移(逻辑右移、算术右移)
2.2 整数表示
三种编码方式:原码、反码、补码。
原码转补码:对于零和正数,原码与补码相同;对于负数,原码符号位不变,其余取反,最后再加一。
2.3 整数运算
2.4 浮点数
浮点数的表示由符号S、尾数M、阶码E三组成。
浮点数的表达不是准确的,日常开发中应注意这一点。
所在小组
第七组
组内昵称
Jinmiao Luo
你的心得体会
知道了单精度和双精度具体的实现规范
一段自己的阐述
我习惯了更新到 GitHub MarkDown 的方式.
阅读请见:
第二周阅读
所在小组
第五组
组内名称
李锦锐
Chapter 2 -Notes
This section is mainly talking about how to represent and manipulate information. And it reveals the relationship between the representation of bits and the implementation of bits . The most important things the author want us to figure out is that casting between signed and unsigned number of different data size.
there is a few key points .
Information storage
Most Computer use blocks of eight bits, or bytes. Bit operation do not subject(obey) to common mathematical properties, such as associativity, commutativity, and distributivity, which allows compiler to do many optimizations.
two-conventions :
ordering becomes issues
when a binary data are communicated over a network between different machines.
when looking at the byte sequences representing integer data, like inspecting machine-level programs.
where byte ordering becomes visible is when programs are written that circumvent the type system.
Integer Representations
Aside
The binary notation is too 【verbose】, while with decimal notation, it is tedious to convert to and from bit patterns.
Programmers should strive to make their programs portable across different machines and compilers.
Reference
所在小组
五组
组内名称
陈松彬
Chapter2
Author: @陈松彬
Date: 2020-09-27
一、为什么是补码
书上提到:对于有符号数的编码方式有多种,常用的是补码,另外还有原码和反码。
那为什么各大厂商的实现都选择了补码呢?我们可以分别分析一下几种编码方式
原码:用一个最高位来代表符号位,非常符合人类的认知,但是参与计算的是计算机。比如在处理加法的时候,需要额外考虑符号位,增加了复杂度
反码:同样使用一个最高位来表示符号,对于数值的部分进行取反操作,这样对于数值0有两种表示形式,造成了浪费(考虑w=4,0有两种表示「0000」或者「1000」)
补码:最高位w的权值设为2^(w-1) 解决了上面两种方式的缺点,对于符号位也参与运算(比如符号位加法,也像普通数值一样相加进1),实现起来方便。
二、类型转化
强制类型转化,这个由于是编写代码的人显示指定的,一般都会认真思考会不会有什么问题。
隐式类型转化,一般往往容易出现bug
三、随想
这一章比较偏数学理论,再次感受到了数学这一门学科的严谨。从中我觉得平时阐述想法,也可以学习这一种严谨的形式:
(1)先列举几个例子
(2)给出了各种符号的定义,给出结论
(3)最后结论推导
同时我觉得一个科学的发现流程应该是这样:发现规律 → 大胆猜测 → 实验验证(公式推导)→ 用数学符号严谨阐述自己的观点(形成论文)
四、