名词解释
硬编码
当从命令行向程序传递参数时,这些参数被称为命令行参数,这些方式对控制特别重要,特别是我们可以从程序外部去控制函数,而不是在程序内部对这些参数进行硬编码
布尔表达式
人们发现可以使用 布尔代数 可以用来描述逻辑电路设计,并且人们使用 布尔表达式 来表示逻辑操作
汇编语言中AND、OR、NOT都是 按位操作的
并且NOT有最高优先级,其次是AND和OR运算。不过可以使用括号来强制指定运算顺序
多路选择器(multiplexer)
![](https://img2018.cnblogs.com/blog/1248430/201910/1248430-20191011225846756-1398339817.png)
数字数据表示术语
要用**精确的术语**来描述内存中及显示屏上的数字和字符。这是非常重要的
比如在内存中用**单字节**保存十进制数65,形式为0100 0001.
调试程序可能会将该字节显示为41,即65的十六进制形式
而如果将这个字节复制到显存中,显示屏上可能会显示字母A,因为在ASCII码中,0100 0001代表字母A
由于数字的解释依赖于它的上下文,因此,需要为每个 ** 数据表示类型** 分配一个 特定的名称 ,以便于将来的讨论更清晰
二进制数 是指以其原始格式保存在内存中的整数,二进制整数保存形式为8的倍数
数字字符串 是指一串ASCII字符 例如“123”、“56”。这是一种简单的数字表示法
字符在计算机中的表示
计算机使用的是字符集,经字符映射位整数
ASCII为每一个字符分配了独一无二的7位整数,由于最高位没有使用,因此最高为经常被用来创建其专有字符。比如,IBM 兼容微机就用数值 128〜255 来表示图形符号和希腊字符。
ANCI字符集
定义了8位字符集来表示256个字符
unicode标准
由于需要被用来表示各种语言的各种字符。因此Unicode被定义出来,用于创建一种定义文字和符号的通用标准
字节bytes、字(word)2个字节、双字(doubleword)、和四字(quadword)
在x86架构中,所有数据储存的基本单位都是字节。一个字节是8位
加法逆元
假如x+x'=x'+x=0,那么x'就称为x的加法逆元
MSB(most significant bit)
在x86处理器中,MSB表示符号位,8位的整数第一位是0,8位的负数第一位是1
对于16进制数,可以通过第一位的大小来判断是正数还是负数,如果>=8,则是负数,如果<=7,就是正数(8A57负数)
所以 ,n位有符号整数只用n-1位来表示数的范围
在书写较大的二进制数时,有些人喜欢每 4 位或 8 位插入一个点号,以增加数字的易读性。比如,1101.1110.0011.1000.0000 和 11001010.10101100
将表中余数列的二进制位逆序连接(D5,D4,…),就得到了该整数的二进制值 100101。**由于计算机总是按照 8 的倍数来组织二进制数字**,因此在该二进制数的左边增加两个 0,形成 00100101。
加法
在进行二进制数的加法时,有时最高有效位的运算会产生进位,这时**预留储存区的大小就显得很重要**,如果 **和数** 的储存为有9位,那么可以将和数表示位1 0000 0000。但是,如果和数只能表示位8位,那么他就等于0000 0000 也就是计算结果的低8位
求补
参考连接http://c.biancheng.net/view/3318.html
求补的过程是可逆的,并且补码的出现避免了为加减运算设置两种两种电路,假如A-B可以转化为A+(-B)通过加法器来完成
按位取反包括符号位
16进制数求补可以用15减去每位数然后整体加一
有符号2进制数到10进制数的转换
如果第一位是1,则是负数,求它的十进制表示:1)先对其求补,(按位取反,加一)将补码转换为10进制,如果为8,则其十进制数为-8
有符号10进制数到2进制数的转换
先将10进制数的绝对值转换为2进制,如果该数为负数,则再第一步的基础上对其求补码(即如果为负数,则在前一步的基础上求相应进制的补码)
将其他进制有符号数向10进制转换
如果为负数,则先求补码,否则保持不变
将上一步结果转换为10进制,如果初始值为负,加上负号
将有符号10进制数向其他进制数转换
先求该数的绝对值,将其转化为相应进制的数
如果该数为负,则对上一步结果求补