补码
正数的补码:与原码相同
负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1(对补码进行操作:各位取反,再加1,得到的数化成10进制,再取反就是了)
大端小端
M表示max,L表示least
大端就是正常顺序,小端是逆序
大端——从小到大 ,应该是正常进制所表示的数据顺序就是在大端内的顺序
小端——从大到小,与大端相反,正常进制所表示的顺序的倒序
立即数就是跟在操作符后面的数字
加法器
有符号数相加/相减导致了CF=1也没什么意义,不能说明结果的正确与否。此时,OF=1,
则说明结果溢出,出现错误;OF=0,说明结果正确。这个过程根本和CF没关系,CF=1/0,都不会影响。同理也可以得出OF对无符号数也无影响
OF 计算:指x+y或x-y结果补码的最高有效位以及次高有效位的进位情况,若有进位,该值为1,否则为0
1 0 0 0 0 0 0 1
+ 1 0 0 0 0 0 0 0
--------------------
1 0 0 0 0 0 0 0 1
Cn是1,Cn-1是0,1⊕0=1,所有OF=1,溢出
ZF=1,说明数=0
CF:结果为负,即符号位为1时SF=1,否则为0.
注意:当产生溢出时,说明符号标志位置出错
IEE754浮点数
尾数那里注意一下:
写在浮点数编码那的尾数域是只要小数部分的数字,而用10进制表示需要再加一个1(因为隐含尾数第一位为1)
先把负号变成符号位,再拿正数去化成二进制2023.2.27复习
一些其他题
选择
以下关于数据表示和数据转换的描述中,错误的是
A. 文字、音频和视频等感觉媒体信息通过某种数字化方法被输入到计算机中就变成了用0/1表示的数字信息
B. 在高级语言程序中出现的数据(变量或字面量)都是一种用0/1表示的数字信息
C. 浮点运算指令中的操作数一定是浮点数,定点运算指令中的操作数一定是定点数
D. 从一条指令给出的信息中可以看出其处理的数据是否是数组元素或结构分量
答案:D
a. 减法 —— +(负数),负数取了补码才能计算
232 * 232得到264位
低32位就足以表示32位int型整数的值
算术移位
int右移一位,首位补符号位,再左移一位,把符号位去掉,末位补0
无符号数的for死循环
测大端小端
再理解补码(机器码)
-19/4=-4
机器码——补码
所以题目意思是求 -4 的补码
- 首先,对 -4 的补码进行各位取反,再加1,得到的二进制化成10进制数,再取反,会得到-4
- 接着,对上面流程进行倒推
- 先找到4的二进制码(char)0000 0100
- 然后 -1 得到 0000 0011
- 再各位取反,得到-4的补码
作业
机器数
正数就是二进制本身,负数就是其补码
没有第4个的答案,应该是40H,下方的答案只有前5个可以看
(有太多没听了,导致写作业的时候实在太难了😢😢😢,很后悔)
关于-1.1的解释:
真值
也是少了一个char的答案,答案应该是 '*' ,从第6个开始
double类型,老师好像没讲过,但是和float类型一个道理,只不过阶码域长11位——x-1023
字符串的机器码
不需要具体看答案内容,只需要知道字符串机器码是这个样式即可
无符号数
题目倒是没有太计较数据类型的范围,主要是考察unsigned数据的无符号特性
机器代码反编译
- 这里的反编译就是指对于用可读的编程语言写出来的程序,经过编译生成的机器代码,又进行一次反编译,得到的代码(此时,代码所表达的含义和用可读编程语言写出来的程序是一样的)
- M的计算还是比较好理解的
- 至于N,就如解析这样,根据反编译结果易知是4,而对于if(y<0)是进行校正的
定点数
- 没什么好说的
- 定点小数,有一位放在整数位上,其他位数放在小数位上
- 答案上面没有,我个人写得是0~232-1
- 因为是补码,第一位要给符号位,所以是2(16-1)
- 基数指×RE中的R(一般默认为2),偏置常数——一般为127(但是在这个题目中为128)
用不同方式表示数
这题怪怪的,但还是能看懂解析,看看解析就好了,别过分纠结
大端小端
题目和答案不太一致,但是主要是看看大端小端的表示(也比较简单)
判断
[“非永真”,“非永真”,“永真”,“非永真”,“非永真”,“非永真”,“永假”,“永真”,“永真”,“永真”,“非永真”,“永真”,“永真”,“永真”]
第5个不太懂,第10个也不懂(如果是x,y有负号呢?),注意一下(12)及其后面的,会存在强制转型。
仔细看看解析吧