Charles Petzold《Code》----2017.1.22 读13章(非常聪明!)

来源:互联网 发布:js json数据格式转换 编辑:程序博客网 时间:2024/05/22 15:21

注:所有笔记均为自己的理解总结,可能并非书本原文,对错不予负责。

摘要:向我们介绍了计算机如何做减法运算。其中介绍了以下几个概念:9的补数或补码、1的补数(相反码、反码)、求补器、10的补数、2的补数。


不使用借位进行减法的两种方法:

1、当被减数大于减数时:
例如:
125-25,
可以转化为
(999-25)+1+125-1000。
其中999-25就是25的9的补数或补码

2、当被减数小于减数时:
例如:
25-125,
可以转化为
999-(999-125+25),对结果再取一个相反数即可。

以上也可应用于二进制,然后相对应的就称为1的补数。1的补数就是原来的0变成1,1变成0,所以,1的补数有时也称为相反数或反码

求补器:
这里写图片描述


计算机如何做减法:

其实就是在做加法,只是将负数也用正数(负数的10的补数或2的补数)来表示。

十进制:
我们用0~999的数来表示-500~499:
这里写图片描述
一个负数的10的补数可以这样计算:负数相反数的9的补数再加1。
例:
1、143-78,-78的10的补数是999-78+1=922,再加上143,等于1065,忽略上溢,取后三位,就是65。
2、65-150,-150的10的补数是999-150+1=850,再加上65,等于915,915其实就是-85。

二进制:
这里写图片描述
可以表示的数的范围从-128~127。最左边的一位称为符号位,1表示负数,0表示正数。
例:
124-125,
124是01111100,
125是01111101,
-125的2的补数就是01111101取反再加1,是10000011。要回到原来的数只需同样的操作:取反后加1。
所以124-125就是01111100+10000011,结果是11111111,其实就是-1。

不生效的情况:
这里写图片描述


有符号的二进制数和无符号的二进制数:
这里写图片描述

0 0
原创粉丝点击