当前位置: 首页 > article >正文

原码反码补码、浮点数

原码

数值具有正负两种符号,但是计算机仅由0和1两种状态构建而成,因此并没有专门用来表示正负号的原生方式,我们凭直觉设计就是挪用其中的一位来表示正负号,简单起见,如果我们用3位表达一个数值,这样的编码系统实际上能够表达的范围将会是:

-(2^2 - 1) = -3, -2, -1, -0, +0, +1, +2, +(2^2 - 1) = +3

 

缺点:

首先,0的表示不唯一,出现了-0和+0

其次(也是更重要的原因)它需要单独的硬件电路来确定正负号。

反码

即一个负数的二进制形式改为其绝对值部分按位逐位反转,称为 [ 一补码 ] (ones’ complement),举例来说,如果我们用3位表达一个数值, 十进制数值 -2 用反码表示是 101 (就是 +2 的逐位反转),对应到数字逻辑电路就是按位反转,说白了就是一个反相器,因此,一补码也被称为 [ 反码 ]。

优点

不用一个单独的硬件电路确定正负号

缺点

仍存在+-0

补码

无论是 [ 原码 ] 还是 [ 反码 ] 都有各自的缺点,于是补码闪耀登场,现代硬件广泛使用补码。

代码测试

测试结果:

 

个人随笔

在4位的设定下:

int x=-1;//-1的二进制原码表示1001,补码表示1111

x=-1;//x二进制原码表示0001,补码表示为0111

浮点数


http://www.kler.cn/a/231062.html

相关文章:

  • vio参数文件内相机imu参数的修改
  • 51单片机 跑马灯
  • 1971 - 大小写转换
  • 机器学习与深度学习
  • 微服务的幂等性
  • 开关电源学习之Boost电路
  • 幻兽帕鲁客户端存档文件 - 云上备份和恢复教程
  • 【WPF】布局容器/面板总结XAML-Panel控件
  • 【Git教程】(一)基本概念 ——工作流、分布式版本控制、版本库 ~
  • Vue2.6+Echarts+Bmap构建地图
  • Mongodb启动为Windows服务开机自启动
  • 数据结构之归并排序
  • 【自动化测试】---Selenium+Java
  • RabbitMQ-4.MQ的可靠性
  • 微信小程序(三十六)事件传参
  • hummingbird,一个非常好用的 Python 库!
  • 从领域外到领域内:LLM在Text-to-SQL任务中的演进之路
  • 计算机毕业设计 | SpringBoot大型旅游网站 旅行后台管理系统(附源码)
  • 【C++航海王:追寻罗杰的编程之路】类与对象你学会了吗?(下)
  • 零基础学Python之面向对象