文章出自个人博客https://knightyun.github.io/2018/04/04/negative-binary,转载请申明


十进制转正整数转二进制应该都会,用C语言代码简单表示算法:

#include<stdio.h>
int main()
{int dec=65535; /*positive decimalism number to binary number*/int bin[32];int i=0, j;while (dec>1){bin[i]=dec%2;dec/=2;i++;}bin[i]=dec;for (j=i; j>=0; j--) /*print binary number*/{printf("%d",bin[j]); }printf("\n");
}

当然也有另外一种简单转换方法:

#include<stdio.h>
int main()
{int dec=65535;char bin[32];itoa(dec,bin,2); /*整型转换为字符串的函数,第一个参数是整型变量,第二个是字符数组,用于存放字符串,第三个是进制,“2” 表示输出的字符串的进制格式,可以这样记函数:“int to arr” */printf("%s\n", bin);
}

但是,十进制负整数转换为二进制稍微复杂一些,分为三步:

一、原码

例如一个十进制数 5,二进制原码表示为:

00000000 00000000 00000000 00000101

大小为 4 字节,每一个 01 表示一个比特位(bit),所以八位为一字节,好像32位和64位系统都这样。一字节用十进制整数表示大小则是:2的8次方(256)。
表示为十六进制是这样:ff ff ff ff(f=2^4-1)

二、反码

将二进制原码每一位取反,就是 0110
上面 5 的反码表示为这样:

11111111 11111111 11111111 11111010

三、补码

将反码最低位加 1 叫做补码,那么 5 的补码表示为:

11111111 11111111 11111111 11111011

注意反码末位是 1 时记得进位。

所以十进制数 -5 的二进制表示为:

11111111 11111111 11111111 11111011

所以 -1 在计算机中表示为全 1,就是:

11111111 11111111 11111111 11111111

我64位计算机中是这样的:


**技术文章推送** **手机、电脑实用软件分享**

十进制负数的二进制表示法相关推荐

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

    程序猿们或许对二进制都不陌生,二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.但是很多人都会将二进制转换成整数,但是如何用二进制表示负数呢?有的人会说,在二进制前面加个负 ...

  2. 计算机进制中负数对应的二进制,十进制负数转换为二进制、八进制、十六进制的知识分享...

    搜索热词 程序猿们或许对二进制都不陌生,二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.但是很多人都会将二进制转换成整数,但是如何用二进制表示负数呢?有的人会说,在二进制 ...

  3. 求十进制负数的二进制补码——水文

    例如求-25的补码 拿到这个数字,我们先不看符号,把这个数字转化成二进制 25的二进制为11001,然后这里用8位二进制,所以我们在11001前面加上两个0,变成0011001,最后再加上符号位(正数 ...

  4. 十进制负数转二进制的方法步骤

    步骤一: 使用该负数的绝对值(负数的绝对值为正数)转成二进制位 步骤二:二进制位按位取反 步骤三:取反后的二进制位+1 实例:-11 步骤一:正数11的二进制位为 00001011 步骤二:按位取反后 ...

  5. java负数转换二进制表示_负数的二进制和十进制之间的转换

    负数的二进制和十进制之间的转换: 1. 十进制负数转换为二进制的方法为: 1.将十进制转换为二进制数. 2.对该二进制数求反. 3.再将该二进制数加1. 总之就是将十进制数转换为二进制数求补码即为结果 ...

  6. 负数10进制转2进制c语言,负数的二进制转换方法

    十进制负数转二进制 假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: (因为java中int 是4个字节,所以高位需要补0,占够32位) 00000000 00000000 0 ...

  7. java负数转换为二进制_负数与二进制换转方法

    1.十进制负数转二进制 假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: (因为java中int 是4个字节,所以高位需要补0,占够32位) 00000000 00000000 ...

  8. java负数转换二进制表示_Java中的负数的在计算机中的二进制表示,以及与十进制的相互转换...

    我们知道数字在计算机中都是以二进制表示的,数字类型有:byte,short,int,long 我给计算机一个数字,计算机首先要确定他的类型,因为不同类型占有的空间是不一样的,     byte占有一个 ...

  9. 十进制负数转化成二进制

    1.将十进制输转化成二进制数,不管符号. 2.对转化的二进制数逐位取反 3.对取反后的二进制数加1,结果就是十进制负数转化成的二进制数. 例:-32转化成二进制数 1.(十进制)32=(二进制)001 ...

最新文章

  1. CSharpGL(19)用glReadPixels把渲染的内容保存为PNG图片(C#)
  2. animate.css动画样式详解
  3. [折半搜索][has] Jzoj P4250 路径
  4. 评价viper4android,ViPer4android. FX顶级音效!
  5. 【Docker】Docker学习笔记:安装部署
  6. 论大数据视角下的地球空间信息学的机遇与挑战
  7. c语言第一章节测试,计算机二级C语言教程章节测试:字符串
  8. 计算机程序的思维逻辑 (54) - 剖析Collections - 设计模式
  9. cacti mysql-bin_Cacti环境搭建(LNMP环境)
  10. LOJ 2312(洛谷 3733) 「HAOI2017」八纵八横——线段树分治+线性基+bitset
  11. Android自定义输入车牌号键盘、车牌简称,数字 ,字母键盘
  12. 笔记本电池不充电了 无法充电 如何激活
  13. 深度linux 1050ti,Archlinux安装NVIDIA1050Ti显卡驱动
  14. EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台
  15. JZOJ1728. Antimonotonicity
  16. 为什么-关于因果关系的新科学 | 01 因果关系之梯
  17. Monte Carlo算法
  18. js摇号程序_车管所怎么摇号流程及查询
  19. bearer token_接口认证方式:Bearer Token
  20. 【Mac环境】mac在线安装brew时返回443链接被拒绝或超时错误解决方案

热门文章

  1. web.xml中webAppRootKey
  2. canvas的基本应用
  3. yii2框架获取刚插入数据库的id (原创)
  4. fso封装类可以用仿dos命令操作文件
  5. 在IDEA中解决jar包冲突的神操作-必看,秒杀市面方法
  6. 成立出版社的条件_厦门大学出版社招聘启事
  7. 如何学计算机课程,一张图告诉你大学如何学好计算机专业课程
  8. JXL生成Excel,并提供下载(2:提供下载)
  9. Kafka分区原理图
  10. AIX下sort命令简介及使用