【软考】2 码制 / 机器数

news/2024/10/3 16:30:41

概念

机器数只能以二进制方式表示,大类分为【无符号数】和【有符号数】

【无符号数】在机器数中没有符号,表示正数

【有符号数】在机器数中有符号,包含正数的其他数值,存在四种操作:【原码】【反码】【补码】【移码】

一、原码

最高位作为符号位进行正数和负数表示

剩余低位表示数值的绝对值

假设位数为3,则可以得知符号位1位和低位数值位2位

整数范围是 -3 到 3,转换公式为 -(2N-1 -1)到 2N-1 -1,N表示位数

表示的数值个数是7个,因为-0表示没有意义, 转换公式为 2N - 1

 

二、反码

1、正数的反码处理后还是正数

2、负数的反码处理是对低位数码的取反

3、因为是对原码的取反,所以数值表示范围和表示个数与原码一致:

表示范围:【-(2N-1 -1)到 2N-1 -1

表示个数:【2N - 1

 

三、补码

1、正数的补码处理还是正数

2、负数的补码处理是先反码后再对最低位 + 1

3、补码进位会使符号位进位

4、补码有【人为定义】的表示数值

其中N为3位时,100 不再认为是-0数值,而视为-4进行表示

同样N为8位时,1000 0000 视为-128进行表示

 所以补码的表示范围相比原码,在负数范围多1个,而表示个数也多1个

表示范围:【-2N-1 到 2N-1 -1

表示个数:【2N

 

 

四、移码

1、移码,是对补码的符号位进行取反

2、同样,基于补码的操作,移码是对符号位取反

所以表示范围和表示个数与补码一致

表示范围:【-2N-1 到 2N-1 -1

表示个数:【2N

 

五、定点小数的码制

 可以参考第一篇进制转换:

https://www.cnblogs.com/mindzone/p/18417186 

1、进制转换,小数部分是 -1、-2、... -N的位数计算

2、数值范围在大于-1和小于1的区间内

- 原码和反码的表示范围和表示个数

表示范围从 -(1 - 2-(N-1)) 到 +(1 - 2-(N-1))

表示个数 2N - 1

- 补码处理 人为规定 -1的补码的符号位为,其余数值位为0

表示范围从 -1 到 +(1 - 2-(N-1))

表示个数 2N

 

六、对照表

 

七、例题:

1、采用n位补码(包含-个符号位)表示数据,可以直接表示数值( )。

A、 2n
B、-2n
C、2n-1
D、-2n-1

解析思路:

假设N为3,则符号位为1,数值位为2

正数最大值为0111 也就是3

负数最大值为1000 也就是-4 【补码人为规定】

A选项 2的3次方为8,最大值3,所以错误

B选项 -2的3次方为-8,最大值-4,所以错误

C选项 2的3次方-1为7,最大值3,所以错误

D选项 -2的2次方-4,最大值-4,包含该数值,所以正确

 

2、如果“2X”的补码是“90H”,那么X的真值是()。

A、72
B、-56
C、56
D、111

解题思路:

X代表未知数,H表示90为十六进制表示数

1、转换90H为二进制表示数

90 -> 9%2 = 4(1), 4%2 = 2(0) , 2%2 = 1(0), 2%1 = 0(1),0位无需计算,补位即可

所以2X的补码表示为 1001 0000

2、从补码转换成原码,过程是反补码 -> 反反码 ->得原码

补码是+1,则反补码是 -1

10010000 反补码 -1 退位 为 10001111

反码是对负数的数值位取反操作,所有题型,默认最高位就是符号位

10001111 最高位是1所以需要按负数进行取反操作

3、原码转换需要记住符号位不参与进制转换

1【0001111】 反反码 后为  1【1110000】

1【1110000】 转十进制为 -(26 + 25 + 24) = -( 64 + 32 + 16 ) = -112

所以 2X = -112 ,X = -56,答案选B

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/67396.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

基于selenium的爬取dblp论文的python爬虫

出于阅读文献的需要,导师让我写一个能够爬取dblp上文献资料的爬虫,话不多说,开学。 学习路径总结前端基本知识 request库与bs库 目标特征,规划爬取步骤 动态加载的应对方法-selenium前端基本知识 前端开发是指创建Web页面或应用程序用户可以与之交互的部分。前端开发主要涉…

探索 java 中的各种锁

Java 8+ -序章 一直听说 java 的各种锁、(线程)同步机制,一直没有深入探索。 最近多看了几篇博文,算是理解的比较深入一些了,特写本文做个记录。ben发布于博客园锁是什么? 一种用于 多个线程运行时协调的机制。 作用如下:ben发布于博客园 1、用于多线程之间同步,比如,…

#1118 - Row size too large. The maximum row size for the used table type, not counting BLOBs

这个问题表示在MySQL中,表的一行数据大小超过了最大限制65535字节。这通常是因为表中的某些字段过长导致的。下面是一些解决方法:调整字段类型:将一些较大的字段改为TEXT或BLOB类型。这些类型的存储方式不同于普通字段,可以避免占用过多的行内空间。拆分字段:如果某个字段…

ssh进Windows的一次尝试

1. 配置端口映射 https://chmlfrp.cn/ 1.2 进入管理面板 1.3实名认证(网站声称是阿里云) 1.4下载客户端1.5进入隧道列表添加隧道1.5进入“配置文件”中选择节点生成配置文件并复制 1.6 设置frpc.ini 删除frpc.ini文件,重新建立并粘贴生成的配置文件 1.7 启动 在当前目录下打…

SpringBoot项目使用yml文件链接数据库异常

SpringBoot使用properties连接数据库时没有出现问题 SpringBoot使用yml连接数据库时出现:Unable to connect to Redis 并在报错信息中出现:发现是用户或者密码出现问题 通过查询知道yml是区分数据类型的,所以如果用户名或者密码是数字的话,就要注意将密码用双引号括起来,将…

行列式求法和矩阵树定理

1.矩阵树定理 无向图,有n个点,如果说i-j之间有连边,那么矩阵g[i][j]=g[j][i]=-1(i-j之间的边的数量),否则值为0 矩阵上对角线上的值为该点的度数,g[i][i]=d[i]; 生成树个数:任选i,去掉i行i列之后的行列式的值 生成树的权值=边权的乘积,所有生成树的权值之和? i-j之间右边,g[i]…

git 代码提交规范 commitLink

commitLink 是一个 git 代码提交规范工具,能规范团队成员代码必须按照 规范提交 1、安装依赖:npm install --save-dev @commitlint/config-conventional @commitlint/cli依赖安装完成之后,会生成一个 commitLink.config.js 配置文件 2、安装 kusky ( mpn install .husky/co…

RUST所有权相关问题

先介绍一下RUST的所有权规则: 1.Rust 中的每一个值都有一个所有者(owner)。 2.值在任一时刻有且只有一个所有者。 3.当所有者(变量)离开作用域,这个值将被丢弃。 变量与数据交互的方式包括两种:移动和克隆。 移动就是转交值的所有权,如let x=y(x的类型未实现Copy trait)…