十进制与十六进制转换(带符号)
负数用十六进制表示,首先应该将其表示成二进制形式,然后变反码,再变补码。

-10——> 原码 1000 1010 ——> 反码 1111 0101 (原码按位反转) ——> 补码 1111 0110(反码+1)
补码变为十六进制表示是 0xF6
另外附上原码、反码、补码的一些小知识。

1. 原码

原码就是符号位加上真值的绝对值, 即第一位表示符号位, 其余位表示值. 比如8位二进制:

[+1]原 = 0000 0001[-1]原 = 1000 0001

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

[1111 1111 , 0111 1111]==>[-127 , 127]

2. 反码

反码的表示方法是:

1.正数的反码是其本身

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

[+1] = [00000001]原 = [00000001]反[-1] = [10000001]原 = [11111110]反

3. 补码

补码的表示方法是:

  • 正数的补码就是其本身
  • 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
[+1] = [00000001]原 = [00000001]反 = [00000001]补[-1] = [10000001]原 = [11111110]反 = [11111111]补

我们知道,原码最大的问题就在于一个数加上他的相反数不等于零。

例如:   0001+1001=1010 (1+(-1)=-2)

     0010+1010=1100 (2+(-2)=-4)

也就是说,计算两个数需要辨别符号未,但计算机辨别"符号位"会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法.

为了解决原码做减法的问题, 出现了反码:

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

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

于是补码的出现, 解决了0的符号以及两个编码的问题:

1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原

这样0用[0000 0000]表示, 而以前出现问题的-0则不存在了.而且可以用[1000 0000]表示-128:

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]补 + [1000 0001]补 = [1000 0000]补

Qt 十进制与十六进制转换相关推荐

  1. C#十进制与十六进制转换

    C#十进制与十六进制转换 C#中关于十进制,十六进制的转换,可以用以下几种方法 (1) string BID="16";//十六进制数 int a=Convert.ToInt32( ...

  2. java二进制计算_Java 二进制,八进制,十进制,十六进制转换运算

    Java 二进制,八进制,十进制,十六进制转换运算 Java进制转换方法 十进制转成十六进制: Integer.toHexString(inti) 十进制转成八进制 Integer.toOctalSt ...

  3. C#的二进制、十进制、十六进制转换

    C#的二进制.十进制.十六进制转换 C#中二进制.十进制与十六进制互相转换,这是比较简单的方法,有不足的地方请指正,欢迎私信沟通. class MainClass{static void Main(s ...

  4. 电脑的二进制、八进制、十进制、十六进制转换

    电脑的二进制.八进制.十进制.十六进制转换 一.注意各进制的单位: 1.二进制 1110101(b) 2.八进制165(o) 3.十六进制75(h) 或者ox75 二.十进制转二进制方法: 1.取余法 ...

  5. 计算机基础之二进制、十进制、十六进制转换(上)

    计算机基础之二进制.十进制.十六进制转换(上) 计数法与数据转换原理 背景知识:什么是计数法 人类历史上,不同的文明发展都遇到同样的问题,人类记录量时比如中文 二.三.四.五.六--,记录数字所使用的 ...

  6. C# 十进制和十六进制转换

    在C#中,十进制和十六进制转换非常简单,方法如下: 十进制转为十六进制: 1 int a = 100; 2 String strA = a.ToString("x8"); 十六进制 ...

  7. QT 十进制与十六进制(字符型) 互相转换 -串口编程

    串口使用中会经常用到.目前使用到的是QByteArray::number(源数据 ,目标输出的进制).作下记录,以供日后参考. 十进制转为十六进制(tmp[0] = '0x14') int num = ...

  8. 二进制,八进制,十进制,十六进制转换算法

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 进制转换算法(Convert) (二.八.十六进制) → (十进制) 二进制 → 十进制 八进 ...

  9. 数制转换(二进制、十进制、十六进制转换)

    数制转换 1.什么是数制 记数所采用的体制,包括数码的组成以及进位和借位规则. 2. 二进制 数码组成:0.1: 规则: (进位)逢二进一,(借位)借一当二. 位权 eg:11001.01=25.25 ...

最新文章

  1. c语言可视化_这些算法可视化网站助你轻松学算法
  2. 机器学习中常用的高级数据结构和数据分析包工具——pandas
  3. ASP.NET MVC 3 Razor 多国语言参考解决方案 补充四
  4. boost::multiprecision模块将 std::numeric_limits 用作 multiprecision.qbk 上的多精度文档片段的示例
  5. R-CNN detection 运行问题及办法
  6. LeetCode 1723. 完成所有工作的最短时间(DFS+剪枝 / 状态压缩DP)
  7. Oracle 实用技巧
  8. 在vue项目中配置axios
  9. 第一次的爬虫小试(爬取网页文本)
  10. IOS 模拟器 在iPhone5和iPhone5s显示不全,不能全屏显示
  11. 矩阵 LUP 分解 解线性方程组 求行列式值 矩阵求逆 算法说解
  12. 我国个人缴税计算实例
  13. 如何让图片放大不模糊?
  14. 数据结构——树|N叉树之孩子双亲表示法——顺序存储结构+链表
  15. ccna网络工程师考试_PrepAway提供的Cisco CCNA无线认证考试问题-建立成功的网络工程师的职业
  16. 武汉大学计算机学院卓越工程师班弘毅学堂,武汉大学弘毅学堂培养方案(2018级试行)...
  17. FPGA图像处理的一些基础知识,FPGA是如何实现最高实时性的?相比于GPU的优势在哪?
  18. css3实现各种角度的三角形
  19. 史上最全PPT制作教程和PPT模板,毕业论文答辩PPT制作方法
  20. QT使用MQTT协议对接华为IOT平台

热门文章

  1. 2021年安全员-C证(山东省)考试技巧及安全员-C证(山东省)考试平台
  2. 2021年安全员-B证(山东省)考试APP及安全员-B证(山东省)作业考试题库
  3. 前端通过MathJax显示数学公式(vue+MathJax)
  4. iphone 续航 测试 软件,历代iPhone续航能力测试:猜猜iPhone11排第几?
  5. JAVA Scanner类的nextInt方法接收到非法输入问题
  6. 小青蛙掉井c语言,关于青蛙的故事-跳出井底的蛙
  7. WPS中表格下移问题和段落问题
  8. 开源4年,极客猿导航迎来了V3.0
  9. re:Invent十周年,亚马逊云科技诠释探路者精神
  10. git 设置 upstream 上游代码库