程序猿们或许对二进制都不陌生,二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。但是很多人都会将二进制转换成整数,但是如何用二进制表示负数呢?有的人会说,在二进制前面加个负数符合。而计算机只能认识0 和 1,又怎么去加个额外的负数符号呢?于是我们就需要用0和1来表示负数。如果想要弄懂这个,我们需要先了解什么是二进制原码。原码是什么

原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

简单直观;例如,我们用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011

原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中00000001 + 10000001 = 10000010,换算成十进制为-2。显然出错了。

二进制原码、补码和反码十进制如何转换成二进制

我们如何把十进制的-3,转换成二进制表示呢?首先我们将 -3 的绝对值 +3 转换成二进制,假设是为int类型(32位)的,那么二进制表示为:0000 0000 0000 0000 0000 0000 0000 0011

负数转换成二进制分为3步:

1、 首先将负数转换为对应的原码

-3 的原码为(也就是+3转换成二进制后的字符串):0000 0000 0000 0000 0000 0000 0000 0011

2、 再将原码的每一位做取反操作得到反码。

取反操作:0变为1 、 1变为0;取反后的结果即为:1111 1111 1111 1111 1111 1111 1111 1100

3、 将反码+1得到补码1111 1111 1111 1111 1111 1111 1111 1101

现在用Windows自带的计算器来验证一下,Win+R 输入calc,将计算器改为程序员,选择双字(4字节,32位)

打开Windows自带的计算器科学计算功能

在计算器中选择十进制,之后输入 -3 :

Windows自带的计算器科学计算十进制下输入-3

再点击二进制转换,将十进制下的-3转换成二进制:

转换十进制-3为二进制二进制转十进制负数问题

正常情况下,转换二进制到十进制都是没有任何问题的。而在类似 Javascript / PHP 等整数类型中,一般 int /integer 都有位数限制,一般都是32位长度。也就预示着,这些语言中,整数是有最大值的,而32位最大整数极限为:2147483647,也就是二进制:01111111111111111111111111111111

那么就很容易理解,32位二进制,第一位数为0的时候,就表示这个是一个正数,而如果是1,那么就表示这个是负数。

32位二进制 11111111111111111111111111111001 十进制值是什么?11111111111111111111111111111001

如上,二进制长度为32位,也就是这个整数是一个负数,先取反,得到反码:00000000000000000000000000000110

反码+1,得到:00000000000000000000000000000111

转换成十进制:7

由于是负数,所以加个负号,转换成 -7

趣味:32位二进制 1111111111111111111111111111001 十进制值是什么?

这个是个比较有趣的,千万不要误导为上面这是一个负数,其实这个是个整数,因为这里只有31位,需要在前面加0,补足32位,变成:01111111111111111111111111111001十进制负数转八进制、十六进制

负数转换成八进制、十六进制,只需在补码(二进制)的基础上,3位合成一位计算,或者4位合成一位计算

-3的转换成二进制为:1111 1111 1111 1111 1111 1111 1111 1101

八进制则将-3的二进制从右至左每3位为一个单元,不够三位用0补 即:011 111 111 111 111 111 111 111 111 111 101

计算每一个单元,结果为:37777777775

十六进制则将-3的二进制从右至左每4位合并为一个单元,即:1111 1111 1111 1111 1111 1111 1111 1101

计算后为: FFFFFFFD

转换十进制-3为八进制和十六进制

android 16进制负数转化,十进制负数转换为二进制、八进制、十六进制的知识分享...相关推荐

  1. java怎么打印进制,java编程思维_007打印二进制,八进制,十六进制

    java编程思想_007打印二进制,八进制,十六进制 package wzs.test2; //打印二进制,八进制,十六进制 public class Test { public static voi ...

  2. 16进制ff转化为二进制_3秒钟快速转换十六进制为二进制

    这里介绍下如何快速将十六进制转换为二进制: 举例,ipv6地址:FE80::1 先将FE80拆分为FE和80,我们知道F是十进制的15,E为14,我们知道二进制的八位组,全为1时(1111 1111) ...

  3. 利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。

    利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能. [实验题目内容] [实验环境](使用的软件):VS - 2010 [项目设计源代码] [项目测试运行结果截图] [实验题目内容 ...

  4. 16进制格式的字符串怎样转换为整数

    16进制格式的字符串怎样转换为整数 请教一个问题在使用一个第三方包的时候我在res/layout目录创建了一个跟该包下layout同名的布局文件结果显示的时候实现效果就被项目中新创建的布局样式所替代那 ...

  5. 利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。(第二版)

    [实验题目内容] 保持计算机默认的十进制不变(要求不用C++流操纵符转换基数为八进制形式oct,不用C++流操纵符转换基数为十六进制形式hex,也不用setbase(base)函数将基数设置为base ...

  6. android 16进制与,Android中汉字和16进制数的转化

    //汉字转化为16进制 String strInput ="湖北武汉"; StringBuffer output = new StringBuffer(); System.out. ...

  7. android 16进制 全透明_你有几种实现方案Android 设备唯一标识?

    前言 项目开发中,多少会遇到这种需求:获得设备唯一标识DeviceId,用于: 1.标识一个唯一的设备,做数据精准下发或者数据统计分析: 2.账号与设备绑定: 3..... 分析 这类文章,网上有许多 ...

  8. SQL 16进制数转化10进制

    16进制数"0X00037FFE9994EE5E"转化为10进制是多少? 我们用SQL转化察看下: select CONVERT(bigint,cast(0X00037FFE999 ...

  9. 华为机试 16进制转换成十进制

    题目描述 写出一个程序,接受一个十六进制的数,输出该数值的十进制表示. 输入描述: 输入一个十六进制的数值字符串.注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder ...

  10. android 16进制/10进制/2进制转换

    // 十六进制转二进制 public String HToB(String a) { String b = Integer.toBinaryString(Integer.valueOf(toD(a, ...

最新文章

  1. 大流量的网站如何解决访问量的问题?
  2. 数据包分析中Drop和iDrop的区别
  3. mysql用户连接数_mysql用户连接数
  4. 文字处理的标签及属性
  5. centos远程mc服务器,Centos7 下最最最简单的部署 MC 服务器超轻松学废
  6. CSDN联合腾讯云重磅发布“腾讯云数据库TDSQL工程师路线图”
  7. 生成器应用及知识推广
  8. Oracle 10g Create Database
  9. 做片子留着备用 超级游戏影视配乐音效库36套合集
  10. 【电路基础】第1章-电路的基本规律(1)
  11. 图像质量评估算法SSIM(结构相似性)
  12. c++11 函数的引用限定符(reference qualifiers)
  13. Python 替换同义词(jieba 实现)
  14. Windows Server 2008 R2 WSUS服务器的详细配置和部署
  15. 服务器中1U、2U、4U指什么?
  16. 从尾到头打印链表(C++和Python 实现)
  17. JAVA个人博客系统设计与实现 毕业设计开题报告
  18. python tkinter控件_Python——Tkinter窗口的函数,Pythontkinter,视窗,功能,部件
  19. 【深度之眼Python基础+数据科学入门训练营】第四章 组合数据类型
  20. 开关电源雷击浪涌整改_防雷击浪涌的开关电源电路设计

热门文章

  1. ios沙箱软件_iOS沙盒管理工具FHHSandBoxViewer
  2. Nginx从入门到入土
  3. 重建 nextcloud 索引,通过非 nextcloud 客户端(手机、PC、网页端)途径放入 nextcloud 目录的文件
  4. Elliptic Labs宣布,搭载其AI虚拟智能传感器的全新小米智能手机Redmi Note 10 Pro正式发布
  5. linux malloc 返回指针不可用,为啥malloc后得到的指针不可以free  ??? 谢谢  [已解决]...
  6. python 图像数据相互转换
  7. 江苏南京图片大集合[精选]
  8. 解决Nvidia显卡问题【显示设置不可用,您当前未使用连接到NVIDIA GPU的显示器】
  9. 财富游戏法则:经济规律【你之所以穷,可能真的是因为命不好!】
  10. mysql java safe model_被 MySQL sql_mode 深深伤害( 下 )