类型转换问题

(1)int -> short 二进制位高位截断,低位保持不变

(2)同类型 unsign -> sign 记住二进制位是不变的

(3)P101页提到的编译器乘法优化问题,一般的乘法需要cpu时钟周期(i7 cpu下乘法也要3 clock cycles)比加法和位移、对二进制位的操作等(only 1 clock cycle)要慢很多。

所以一般乘法 如x*b,编译器会自动转换为若干个x*2^n然后相加的形式,然后只要执行位移和加法就可以完成乘法运算了,可以缩短所需要的时钟周期。注意溢出也没事照做。

对于一些常数K,表达式x*K,编译器可以将K的二进制表示为分开的若干个0或1的序列

[(0…0)(1…1)(0…0)…(1...1)]。

For example,14 can be written as [(0…0)(111)(0)].

Consider a run of ones from bit position n down to bit position m. (n >= m)

如1的起点二进制位posi 为1,终点为3

这样的话,x*K就可以表示为下列两种形式

Form A:(x << n) + (x <<(n-1)) + …+(x<<m)

Form B:(x << (n+1) – (x << m))

(4)P104除法优化问题,同理

Integer division on most machine is even slower than integer multiplication—requiring 30 or more clock cycles.

P116

注意这个Denormalized number.

P120

Floating point Rounding

There are four rouding mode(凑整模式):

Round-to-even, Round-toward-zero,Round-down,Round-up;

When using Round-to-mode, both 1.2350000 and 1.2450000 would be round to 1.24 since 4 is even(偶数的). As to binary fractional, it means that we prefer to have the least significant bit equal to zero.

P125

浮点数类型转换问题

From float or double to int:

The value will be round to zero. For example, 1.999 will be converted to 1, while -1.999 will be converted to -1.

CSAPP 第二章随笔的更多相关文章

  1. CSAPP第二章show_bytes函数的探究

    CSAPP第二章中给出了一个帮助我们观察数据的位模式的函数--show_bytes函数,具体实现如下: #include<stdio.h> typedef unsigned char *b ...

  2. 读CSAPP第二章的收获

    一:一道很有意思的位运算题目:你只有两种操作 bis(x, y): 在y为1的每个位置上,将x的对应的位设为1bic(x, y): 在y为1的每个位置上,将x的对应的位设为0 简单的化简一下bis(x ...

  3. C++primer第二章

    第二章 :变量和基本类型 2.1 基本内置类型 C++定义了一套包含算术类型(arithmetic type)和空类型(void)在内的基本数据类型 2.1.1 算术类型 算术类型的分类: 整型(in ...

  4. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库

    在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...

  5. 《Django By Example》第二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速 ...

  6. Jenkins入门系列之——02第二章 Jenkins安装与配置

    2014-12-08:已不再担任SCM和CI的职位,Jenkins的文章如无必要不会再维护. 写的我想吐血,累死了. 网页看着不爽的,自己去下载PDF.有问题请留言! Jenkins入门系列之——03 ...

  7. Python黑帽编程 2.0 第二章概述

    Python黑帽编程 2.0 第二章概述 于 20世纪80年代末,Guido van Rossum发明了Python,初衷据说是为了打发圣诞节的无趣,1991年首次发布,是ABC语言的继承,同时也是一 ...

  8. 《Entity Framework 6 Recipes》翻译系列 (3) -----第二章 实体数据建模基础之创建一个简单的模型

    第二章 实体数据建模基础 很有可能,你才开始探索实体框架,你可能会问“我们怎么开始?”,如果你真是这样的话,那么本章就是一个很好的开始.如果不是,你已经建模,并在实体分裂和继承方面感觉良好,那么你可以 ...

  9. Asp.Net MVC4 + Oracle + EasyUI 学习 第二章

    Asp.Net MVC4 + Oracle + EasyUI 第二章 --使用Ajax提升网站性能 本文链接:http://www.cnblogs.com/likeli/p/4236723.html ...

随机推荐

  1. C# 多线程传递多个参数

    http://www.cnblogs.com/lvdongjie/p/5416883.html 3. 方式三:采用lambda表达式 对于lambda表达式不熟悉的可以查看微软MSDN上的说明文档.此 ...

  2. 命令行执行Django脚本的方法

    update.py import os import sys import django sys.path.append(r'C:\Users\Administrator\PycharmProject ...

  3. \Process(sqlservr)\% Processor Time 计数器飙高

    计数器" \Process(sqlservr)\% Processor Time",是经常监测,看看SQL Server如何消耗CPU资源.sqlserver是如何利用现有的资源; ...

  4. swiper轮播问题之一:轮播图内容为动态数据生成时轮播图无法自动轮播

    本人在用H5做移动端项目中使用Swiper遇到的两个问题,因此加深了对Swiper的掌握,分享出来对刚开始接触Swiper的童鞋们或多或少会有帮助.        首先,new Swiper的初始化最 ...

  5. Java常用命令与参数设置

    我介绍的JDK版本: 首先.介绍下JDK常用参数设置,如下是我个人环境的参数: -Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m 我们 ...

  6. 网络时钟服务器,NTP授时设备,北斗网络校时服务器,GPS时间同步器

    网络时钟服务器,NTP授时设备,北斗网络校时服务器,GPS时间同步器 网络时钟服务器,NTP授时设备,北斗网络校时服务器,GPS时间同步器 论述当下网络时间同步的重要性   北京华人开创科技发展有限公 ...

  7. SSM框架开发web项目系列(六) SpringMVC入门

    前言 我们最初的javaSE部分学习后,基本算是入门了,也熟悉了Java的语法和一些常用API,然后再深入到数据库操作.WEB程序开发,渐渐会接触到JDBC.Servlet/Jsp之类的知识,期间可能 ...

  8. python并发之多线程

    一开启线程的两种方式 from threading import Thread import time def haha(name): time.sleep(2) print('%s 你大爷..... ...

  9. js变量提升小记

    作为世界上最优美的语言javascript的使用者,呵呵,js的魅力是无穷的,今天来聊聊他的魅(dan)力(teng)之一,变量提升. 每种语言所定义的变量基本都会有一定得作用域,而js的作用域则存在 ...

  10. 将linux下的office从libreoffice换成wps

    1.下载wps的linux的deb版本 2.运行dpkg -i wpsXXX.deb 3.提示权限不够 4.运行 sudo dpkg -i wpsXXX.deb 5.提示错误 未安装软件包 libpn ...