yetang307

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  129 随笔 :: 0 文章 :: 1 评论 :: 2365 阅读

一个数在计算机的存储形式是二进制数,我们称这些二进制数为机器数,机器数是有符号,在计算机中用机器数的最高位存放符号位,0表示正数,1表示负数。

因为带有符号位,所以机器数的形式值不等于其真值,以机器数1000 0111为例,其真正表示的值为-7,而形式值为135。将带符号的机器数的真正表示的值称为机器数的真值。

原码的表示与机器数真值表示的一样,即用第一位表示符号,其余位表示数值

反码的表示方法为:

正数的反码是其原码本身。

负数的反码是在其原码的基础上,符号位不变,其余各位取反。

补码的表示方法为:

正数的补码是其原码本身。

负数的补码是在其原码的基础上,符号位不变,其余各位取反后加1(即在反码的基础上加1)。

在原、反、补码中,正数的表示是一模一样的,而负数的表示是不相同的,所以对于负数的补码来说,我们是不能直接用进制转换将其转换为十进制数值的,因为这样是得不到计算机真正存储的十进制数的,所以应该将其转换为原码后,再将转换得到的原码进行进制转换为十进制数。

如果用原码表示,让符号位也参与计算,对于减法来说,结果是不正确的。

通过计算我们发现用反码计算减法,结果的真值部分是正确的。而唯一的问题出现在"0"这个特殊的数值上,虽然人们理解上**+0和-0**是一样的,但是0带符号是没有任何意义的,而且会有[0000 0000]原和[1000 0000]原两个编码表示0。

因为补码能多存储一个-128,而且在计算机底层中存储的是补码,所以在计算机中一个8位的二进制数的存储范围是用补码表示的[-128,127],而不是用原码或反码表示的[-127,127]。这也可以解释为什么计算机中一个字节的取值范围是[-128,127]。

原码、反码、补码的使用,是人们为了让符号位能参与运算并让计算机底层运算更加简单而设计出来的数据存储表示方式。

实验要求

1、题目避免重复(第二阶段);

建立数组存储已经输出过的式子保证题目没有重复地出现

2、可定制(数量/打印方式):输入大的数量值,测试一下系统是否崩溃,反向查找系统是否优化的余地;

加入temp的计数符来安排对应的个数进行换行保证打印方式

定义数量的变量确定循环的次数达到定制数量的目的

3、定制操作数的个数:

对于符号和数字增加指定循环

4、定制是否有乘除法

对于随机数进行是否%2的处理保证是有4个随机数还是2个随机数来确定乘除法是否出现

5、定制是否有括号(随机加入)

对于前括号保证随机且不在最后一个数字前添加前括号

对于后括号保证在至少前括号两位以后出现且一定会出现即没有随机到就放到最后一个数字之后

 

6 、定制数值范围(确定操作数的取值范围)

提前输入数字的最大最小值

posted on   椰糖  阅读(15)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示