源码、反码和补码

news/2024/11/17 1:52:25/文章来源:https://www.cnblogs.com/Chengkai730/p/18390560

对于有符号数而言,原码就是一个数的二进制表示。二进制的最高位是符号位,0 表示正数,1 表示负数。比如 56 是十进制,转为二进制就是 00111000,于是 56 的原码就是 00111000,左边第一位 0 是符号位,后面的其他数字是数据位。

计算机用数的原码进行显示,数的计算和存储是用补码进行的。

用原码对正数进行计算是不会有什么问题的。

正数的原码,反码和补码都一样,即正数三码合一。

负数的原码就是绝对值的原码的最高位的 0 改为 1。比如 56 是十进制,转为二进制就是 00111000,于是 56 的原码就是 00111000,于是 -56 的原码就是 10111000。

负数的反码的计算方式:原码的符号位不变,其他位取反,即 1 变成 0,0 变成 1。

负数的补码的计算方式:反码加 1。因此负数的反码等于补码减 1。即:

负数的补码 = 反码 + 1

负数的反码 = 补码 - 1

0 的反码和补码都是 0。

一个字节是 8 位,即 8 个 bit。一个字节的数字,最大是 01111111,转为十进制为 127。最小值为 11111111,转为十进制为 -127。

反码是为了解决原码不能计算负数的问题而出现的。负数计算的时候,如果结果不跨 0,是没有任何问题的,但是如果结果跨 0,则计算结果和实际结果有 1 的偏差。

补码是为了解决反码在负数计算时跨 0 的问题而出现的。补码还能多记录一个特殊的值,即 -128。-128 在一字节下没有原码和反码。

一般都是先根据一个数写出它的二进制表示,即得到原码,然后从原码得到反码,再从反码得到补码。最后用补码进行计算,计算结果是补码,再将这个结果转化为反码,再将反码转化为原码,最后输出原码。即:

一个数 → 原码 (二进制表示) → 反码 → 补码 → 进行计算 → 补码 → 反码 → 原码

计算得到补码时,如果补码的最高位为 0,说明是正数,则反码和原码也都和补码相等(三码合一)。

-128 没有原码和反码,只有补码。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

作业:自我介绍+软工5问

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13219这个作业的目标 学习编辑博客、预习教材介绍我自己 大家好,很高兴在这里与大家分享一些关于我的个人经历和兴趣爱…

洛谷团队

团队宣传!!! luogu团队!!! 网址:https://www.luogu.com.cn/team/79256 我的ID:sunhy2012 如要加入,信息请填“__sunhy2012__推荐”

陕西省专业技术人员继续教育刷课脚本-JavaScript编写

脚本 学习网站:陕西省专业技术人员继续教育学习平台: jxjy01.xidian.edu.cn 脚本地址:陕西省专业技术人员继续教育-刷课脚本 教程 1.插件安装(以Microsoft Edge浏览器为例)打开最中间那个蓝色绿色的浏览器,谷歌之类的浏览器也可以点击屏幕右上角三个点,图示位置,然后点击…

Go plan9 汇编: 打通应用到底层的任督二脉

原创文章,欢迎转载,转载请注明出处,谢谢。0. 前言 作为一个严肃的 Gopher,了解汇编是必须的。本汇编系列文章会围绕基本的 Go 程序介绍汇编的基础知识。 1. Go 程序到汇编 首先看一个简单到令人发指的示例: package mainfunc main() {a := 1print(a) }运行程序,输出: # …

20221414徐鹿鸣Markdown学习作业

问题一:哪些内容是你掌握的?哪些内容是你没有掌握的?使用AI推荐的工具或者你喜欢的工具实践一下没有掌握的内容。通义千问的回复 对我而言,Markdown的基础语法我接触过一二,但余下的高级语法、各种工具以及它与人工智能生成的内容的关联我并不清楚。 StackEdit在线Markdow…

Qt svg 图标图片不显示

因为少了Qt5Svg.dll库和imageformats文件夹的依赖,可以对对应Qt安装目录下的32位或者64位库文件夹中去找到。 自己开发了一个股票智能分析软件,功能很强大,需要的关注微信公众号:QStockView

深度学习(初始化)

深度学习训练的时候,一个好的初始化结果能使模型更容易收敛,Pytorch提供了一些初始化函数。import torch import torch.nn as nn import matplotlib.pyplot as pltclass Model(nn.Module):def __init__(self):super(Model, self).__init__()self.a = nn.Parameter(torch.zero…

电流峰值采样电路分析

一、前言在一些电路控制中,采集电路中某部分的峰值电流做处理是非常有必要的,所谓的电流采样,本质上还是电压采样。接下来将介绍一种电流峰值采样电路。 二.基本原理最基本的原理是利用电容的充放电特性,基本电路如下图所示,当电源电压上升时,二极管导通给电容充电。电源…

自我介绍和软工五问

| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/ | | ----------------- |--------------- | | 这个作业要求在哪里| https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13228 | | 这个作业的目标 | <学习使用github,思考自己对课程…

信息学奥赛初赛天天练-80-NOIP2015普及组-基础题5-错位排列、二叉树、完全二叉树、叶子节点、完全二叉树叶子节点

NOIP 2015 普及组 基础题5 21 重新排列 1234使得每一个数字都不在原来的位置上,一共有( )种排法 22 一棵结点数为 2015的二叉树最多有( )个叶子结点 2 相关知识点 1) 错位排列 考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样…

2024 NepCTF

NepCTF NepMagic —— CheckIn 直接玩游戏就能出 注意有一关要把隐藏的方块全找到 NepCamera 先使用tshark读取数据结果文件中发现大量jpeg头ffd8ffe0。猜测是多个图片,编写脚本,提取出来。 脚本: import reinputFilePath="C:\\Downloads\\NepCamera\\result.txt"w…

JAVA基础之三-接口和抽象类

java提供了抽象类和接口,总体是好事。 有的OOP语言并没有接口的概念,但相当一部分其实用其它方式实现了JAVA中接口类似的功能。 如果不太清楚二者的区别,难免在面临具体业务的时候,在二者之间摇摆。 --- 实际上,关于抽象类和接口的共同点和不同点没有什么可以写的。 设计原…