挑战408——组成原理(7)——数据的表示及其运算刷题(1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/redRnt/article/details/83384255

本节的内容:数据的表示和运算
参考资料:408真题
涉及的知识点:

  1. 数的补码,原码,移码表示
  2. 二进制与16进制
  3. 强制类型转换
  4. 定点数及其加减运算
  5. 浮点数及其加减运算

补充知识

大端对齐与小端对齐

大端对齐模式,是指一个字节中的高位字节放在这个字区域内的低地址处。
小端对齐模式,是指一个字节中的低位字节放在这个字区域内的低地址处。(最常用
将一个32位的16进制数0x12345678存放在内存中(机器按字节编址
在这里插入图片描述
实际上,小端模式就是从后面往前面存储的。

常用的进制转换数及一些技巧

127 = 7FH = 0111 1111B
128 = 80H = 1000 0000B
255 = FFH = 1111 1111B
65535 = FFFFH = 1111 1111 1111 1111B

算大的数可以用16进制数方便计算,十进制转二进制也可以转换为16进制再转换为2进制。

按边界对齐

按边界对齐?简单的说,对于int型而言,起始地址为4的倍数;对于char类型而言,起始地址为任意字节皆可;对于short类型而言,起始地址为2的倍数;对于结构体而言,对齐方式为结构体内类型最大的字节量。

强制类型转换

第一道题
在这里插入图片描述
分析
算式显然是 int = int +short 类型,一定存在强制类型转换,那么short ->int 需要添加扩展位,注意,机器中的数用补码表示的,所以结果用补码运算。过程如下:
图中虚线左边的是16进制数,右边是2进制数,由于答案是16进制数,我们便化为16进制数进行加减。
同时,特别注意,负数的补码,是除了符号位以外取反后加
一,正数的补码等于原码等于反码

考点:强制类型转换,码制间的转换运算

在这里插入图片描述

第二道题
在这里插入图片描述

分析:短字节向长字节的转换,高位的扩展位变为对应的符号位。
在这里插入图片描述

第三道题
在这里插入图片描述
分析:无符号与有符号之间的相互转换,主要看对符号位的解释,将符号位当成符号就是有符号数,当成真值解释就是无符号数。机器中用补码表示数。
在这里插入图片描述

定点数基本运算及存储方式

第一道题
在这里插入图片描述
分析
这是一道表面考定点数补码的乘法的问题,但是学过的都知道,乘法的计算太啰嗦了,而且要记忆的东西步骤也极为麻烦,所以出在考试大题不大可能,出现在选择题更不可能,而这个题目,一开始就让我们计算四个数分别相乘的组合。老老实实做,那么做完你也应该快考完了。所以换个角度,直接判断是否溢出,将它们化为10进制真值,用结果看看能不能用8位表示。说白了还是考码制之间的转换。

考点 :码制间的转换与运算,溢出判断

解答;
在这里插入图片描述

第二道题
在这里插入图片描述
分析:关键词按字节编址按边界对齐小端方式。我们知道int是占用4个字节的,char1个字节,short为2个字节,加起来要7个字节,但是实际上是8个。因为它按边界对齐。我们注意到,按顺序short应该到D,但是D = 13,不是2的倍数,所以从E开始存储。
所以过程如下:
在这里插入图片描述

第四道题
在这里插入图片描述
分析:如果直接死脑筋算的话,很是麻烦,看看有没有好的办法,二进制数对2的乘除,就是移位操作,乘上一个2,左移。除去一个2,右移。实在忘记了,就举个10进制的例子:
2 X 10 = 20 //相当于将2左移一位
20/10 = 2 //相当于把20右移了一位。这样就好办了:
在这里插入图片描述

再来两道一模一样的真题:
在这里插入图片描述
在这里插入图片描述
用上面的方法做,原理都是一样的,答案分别为 C A

猜你喜欢

转载自blog.csdn.net/redRnt/article/details/83384255
今日推荐