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

16位-32768的补码和原码是什么【补码和原码的转换】

说到负数求补码,最先想到的可能是以下步骤:
1、确定负数的原码
2、求反码(除符号位不变,其他位取反)
3、反码加1得到补码。
例:-9的补码表示
1、确定原码是1000 1001
2、求反码1111 0110
3、反码加1得到1111 0111
下面验证一下,
对于原码1000 1001,十进制为1* 2^3 + 0* 2 ^2 + 0* 2 ^1 +1* 2 ^0=8+1=9,由于符号位是1代表是负数,所以是-9。这是原码的计算(符号位不参与运算)
对于补码1111 0111,转换为十进制位-1* 2 ^7 + 1* 2 ^6 + 1* 2 ^5 + 1* 2 ^4 + 0* 2 ^3 + 1* 2 ^2 + 1* 2 ^1 + 1*2 ^0 = -128+64+32+16+4+2+1=-9。这是补码的计算(符号位参与运算)
以上是针对8bit的表示,并且-9在8bit有符号的表示范围内(-128~127)。符号位在原码计算中不参与运算,在补码运算中参与运算
上面的计算基于-9在8bit的表示范围内-128 ~ 127(-2^8~2 ^8-1),这里的范围指的是补码的表示范围,这个很重要。前面说到,用原码表示时符号位不参与运算,原码最大值为0111 1111=127,原码的最小值为1111 1111也是127,因为符号位为1所以是-127,也就是说原码的表示范围是-127 ~ 127。原码中无法表示-128。
那么补码能否表示-128呢?原码的最小值是-127,现在求一下它的补码,根据上面的三步可以知道原码是1111 1111,反码是1000 0000,补码为反码加1,即1000 0001。十进制-127-1=-128,对应补码1000 0001-1=1000 0000,所以补码可以表示-128,所以8bit表示的范围-128 ~ 128指的是补码的表示范围。-128是8位补码的最小值
总结:
1、原码的计算符号位不参与运算
2、补码的计算符号位参与运算
3、8位二进制补码可以表示的数值范围为 -128 到 +127,其中:最小值为 -128(对应二进制 1000 0000),最大值为127(对应二进制 0111 1111)。
回到题目16位-32768的补码和原码是什么,16位的补码最小值为-2 ^(16-1)=-32768(对应二进制1000 0000 0000 0000),同理,原码中无法表示-32768,非要表示至少需要有符号数17位才行。




扩展
对于负数 -x,其补码等于 (2^16 - x) 的二进制形式。 16是有符号数x的位宽。
带入两个例子,第一个便是题目中的对于16位-32768的补码,等于2 ^16-32768=65536-32768=32768的二进制形式。在计算器中输入32768得到在这里插入图片描述
正好与之前的对应。这里的二进制形式应该是无符号数的二进制形式。 前面说到如果是有符号的话,16bit的最大值是32767,无法表示到32768。
eg:-24446的补码(16bit)是多少?带入公式,补码等于2^16- 24446=41090的二进制形式。在这里插入图片描述
使用前面的三步骤验证一下,-24446的原码是1101 1111 0111 1110,反码是1010 0000 1000 0001,补码为反码加1即1010 0000 1000 0010与计算器得出的结果是一致的。
在计算机中一般用补码表示数,1010 0000 1000 0010是补码,对于有符号数则为-24446,对于无符号数为41090。

相关文章:

  • spring IOC(实现原理)
  • 如何让一个类作为可调用对象被thread调用?
  • WSL with NVIDIA Container Toolkit
  • 基于单片机的风速报警装置设计
  • 深度学习模型组件之优化器--自适应学习率优化方法(Adadelta、Adam、AdamW)
  • 【Ant Design X Vue】Vue 首个 AI 组件库发布!
  • 前端题目类型
  • 记录小白使用 Cursor 开发第一个微信小程序(一):注册账号及下载工具(250308)
  • manus本地部署方法研究测试
  • 后序线索化二叉树,并找到指定结点前驱,非递归逆序输出
  • 通义万相 2.1 + 蓝耘算力,AI 视频生成的梦幻组合
  • 机器学习图像标记工具MyVision的使用教程
  • Unity, AssetBundle的一些“隐藏”方法
  • JavaScript基础-递增和递减运算符
  • opentitan riscv
  • 前端知识点---库和包的概念
  • 大白话JavaScript实现一个函数,将字符串中的每个单词首字母大写。
  • 用Deepseek写一个五子棋微信小程序
  • Qwen架构与Llama架构的核心区别
  • moodle 开源的在线学习管理系统(LMS)部署
  • 网站seo测评/西部数码域名注册
  • 凡科做数据查询网站/网络推广外包公司哪家好
  • wordpress全文/seo 重庆
  • 深圳做网站得外包公司/泉州seo技术
  • 做网站怎么查看来访ip/微博推广
  • 哪个网站做加盟的比较靠谱/企业网站推广方法实验报告