二进制补码和十进制数的转换

二进制补码和十进制数的转换最近做的一个工程项目用到了基本的数据转换 代码实现了一遍 供大家和自己参考 先考虑如何将二进制补码转换为十进制整数 若符号位是 0 则该数是正数 原码等同于补码 可以由原码 也就是补码 得知代表的正整数 若符号为是 1 则该数一定是负数 可按照以下方式转换 方式一 先把符号位去掉 把剩下的非符号位取反后得到一个无符号位的二进制序列 将该二进制序列转换为十进制整数 注

最近做的一个工程项目用到了基本的数据转换,代码实现了一遍,供大家和自己参考。

先考虑如何将二进制补码转换为十进制整数:

  1. 若符号位是0, 则该数是正数, 原码等同于补码. 可以由原码(也就是补码)得知代表的正整数.
  2. 若符号为是1, 则该数一定是负数, 可按照以下方式转换: 方式一: 先把符号位去掉, 把剩下的非符号位取反后得到一个无符号位的二进制序列, 将该二进制序列转换为十进制整数(注意:无符号位二进制序列代表的一定是正数),
    将该整数加1得到的数便是原补码代表的整数的绝对值. 如: a = 1011(补码), 011取反得到100, 100代表4, 4+1=5,
    |a|=5, a=-5. 方式二: 利用公式: (-1)2^(n-1) + 非符号位代表整数 = 值. 如a =
    1011(补码), n = 4, 011代表3, a = -1

    2^3 + 3 = -5.




功能函数

int u4complement(BYTE *pData) { 
    int sign = int(pData[0] >> 7); if(sign == 0) return pow(256, 3)*int(pData[0]) + pow(256, 2)*int(pData[1]) + pow(256, 1)*int(pData[2]) + int(pData[3]); if(sign == 1) return -1*(pow(256, 3)*int(pData[0]^0xFF) + pow(256, 2)*int(pData[1]^0xFF) + pow(256, 1)*int(pData[2] ^ 0xFF) + int(pData[3] ^ 0xFF)+1); } 

主函数

 #include "pch.h" #include  
     #include "math.h" using namespace std; typedef unsigned char BYTE; int u4complement(BYTE *pData) ; int main() { 
    BYTE *complete = new BYTE[4]; complete[0] = 0xFF; complete[1] = 0xFF; complete[2] = 0xFF; complete[3] = 0xFA; cout << u4complement(complete) << endl; } 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177619.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:05
下一篇 2026年3月26日 下午7:05


相关推荐

  • 二叉树基本性质和操作

    二叉树基本性质和操作文章目录树 Tree 定义树的基本术语树的基本性质二叉树定义二叉树的特点二叉树的性质特殊二叉树斜树定义特点满二叉树定义特点完全二叉树定义特点二叉树操作结构体创建二叉树遍历先序遍历 DLR 中序遍历 LDR 后序遍历 LRD 层序遍历双序遍历树的深度结点个数叶子结点个数叶子结点到根结点的路径左右结点互换树 森林与二叉树的转换树转换为二叉树森林转换为二叉树二叉树还原为树二叉树还原为森林结语树 Tree 定义树 Tree 是 n n 0 个结点的有限集 n 0 时称为空树 在任意一棵非空树中 1 有且仅有一个特定的

    2026年3月20日
    2
  • python取余还是相乘_python取余还是相乘_基于python 取余问题(%)详解

    python取余还是相乘_python取余还是相乘_基于python 取余问题(%)详解取余的公式:余数=除数-被除数*商python的的余数是按照整除(向下取整)得到的商来计算的。取余问题主要分为:正数与正数,负数与负数,正数与负数,0正数与正数#大数/小数:因为得出的商和整除得出的一致,所以直接按照这个公式(余数=除数-被除数*商)即可。print(9//7)#1print(9%7)#2#小数/大数:因为得出的商和整除得出的一致,所以直接按照这个公式(余数=除数-被除数*…

    2022年5月20日
    41
  • Claude Opus 4.5硬核AI测评:GLM vs Seedream vs Nano文生图详细对比测评报告

    Claude Opus 4.5硬核AI测评:GLM vs Seedream vs Nano文生图详细对比测评报告

    2026年3月12日
    3
  • typescript中文手册,你想知道的这儿全都有~

    typescript中文手册,你想知道的这儿全都有~基础类型介绍为了让程序有价值 我们需要能够处理最简单的数据单元 数字 字符串 结构体 布尔值等 TypeScript 支持与 JavaScript 几乎相同的数据类型 此外还提供了实用的枚举类型方便我们使用 布尔值最基本的数据类型就是简单的 true false 值 在 JavaScript 和 TypeScript 里叫做 boolean 其它语言中也一样 varisDone boolean false 1 数字和 JavaScript 一样 TypeScript 里的所有数字都是浮点数 这些浮点数的类

    2026年3月17日
    1
  • AI实践(0)学习路线

    AI实践(0)学习路线

    2026年3月13日
    2
  • paping && psping 那些事

    paping && psping 那些事paping amp psping 简单描述 paping 跨平台 psping 只能在 windows 上进行使用 ping 跨平台当需要测试数据包能否通过 IP 协议到达特定主机 一般都是使用 ping 工作时 ping 向目标主机发送一个 ICMPEcho 请求的数据包 并等待接收 Echo 相应数据包 通过响应时间和成功响应的次数来判断丢包率和网络延迟 担当对方禁止 ICMP 之后 ping 将无效 所

    2025年9月2日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号