十进制负数转换为二进制、八进制、十六进制的知识分享_相关技巧

程序猿们或许对二进制都不陌生,二进制是计算技术中广泛采用的一种数制。二进制数据是用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为八进制和十六进制

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索二进制
, 十六进制
八进制
二进制八进制十六进制、二进制负数转十六进制、二进制转八进制、二进制转八进制算法、二进制转换八进制,以便于您获取更多的相关知识。

时间: 2024-09-25 13:48:37

十进制负数转换为二进制、八进制、十六进制的知识分享_相关技巧的相关文章

负数与二进制换转方法_相关技巧

1.十进制负数转二进制 假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为: (因为java中int 是4个字节,所以高位需要补0,占够32位) 00000000 00000000 00000000 00000101 现在想知道,-5在计算机中如何表示? 在计算机中,负数以原码的补码形式表达. 什么叫补码呢?这得从原码,反码说起. 原码:一个正数,按照绝对值大小转换成的二进制数:一个负数按照绝对值大小转换成的二进制数,然后最高位补1,称为原码. 比如 00000000 000

HexConversion 二进制 八进制 十六进制 十进制

public class HexConversion { // TODO Auto-generated method stub /** * TODO 进制转换. * * @param cc * http://yunpan.cn/QD8epsIs6YPXG */ public static void main(String[] args) { /** * 基本原理 二进制-->十进制 * * 1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=1+0+4+8=13 * * 八进制-->

进制转换算法原理(二进制 八进制 十进制 十六进制)_相关技巧

1.二进制数.八进制数.十六进制数转十进制数 有一个公式:二进制数.八进制数.十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数.个位,N=1;十位,N=2...举例: 110B=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6D 110Q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72D 110H=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272D 2.十进制数转二进制数.八进制数.十六进制

C#实现十进制数转换为二进制、八进制、十六进制数的算法

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace ExDtoB { public partial class Form1 : Form { public Form1() { InitializeCom

asp.net 字符串、二进制、编码数组转换函数_实用技巧

1.字符串转二进制数组 string content="这是做个测试!"; System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding(); byte[] byteArr = converter.GetBytes(content); 2.二进制数组转为字符串 复制代码 代码如下: System.Text.UnicodeEncoding converter = new System.Text.Unicod

asp.net下大文件上传知识整理_实用技巧

最近做在做ePartner项目,涉及到文件上传的问题. 以前也做过文件上传,但都是些小文件,不超过2M. 这次要求上传100M以上的东西. 没办法找来资料研究了一下.基于WEB的文件上传可以使用FTP和HTTP两种协议,用FTP的话虽然传输稳定,但安全性是个严重的问题,而且FTP服务器读用户库获取权限,这样对于用户使用来说还是不太方便. 剩下只有HTTP.在HTTP中有3种方式,PUT.WEBDAV.RFC1867,前2种方法不适合大文件上传,目前我们使用的web上传都是基于RFC1867标准的

ASP.NET母版页基础知识介绍_实用技巧

模板页是做什么的? 利用模板页可以方便快捷的创建统一风格的ASP.NET网站,并且容易管理和维护,提高了效率. 模板页为网页定义所需要的外观和标准,在母版的基础上创建包含显示内容的各个内容页.当用户请求内容页时,这些内容页与母版页合并,这样,模板页的布局与内容页的布局就可以组合在一起输出了. 模板页一般用来: 1.通过修改模板页来处理网页的通用功能. 2.可以方便的创建一组控件和代码,并应用于一组网页. 3.通过允许控制占位符控件的呈现方式,模板页可以在细节上控制最终页的布局. 模板页与普通页

资料:数据恢复知识基础_应用技巧

计算机上只有数据是最关键的,数据的丢失才是最大的损失.下面我来讲解一些数据恢复的基本知识. 首先申明一点,对于重要数据,备份数据才是防止数据丢失的根本方法,而数据恢复依赖于很多因素,很难完全恢复数据,一般是仅仅可以恢复部分数据. 数据恢复就是找回丢失的数据,例如彻底删除某个文件或文件夹,重新格式化磁盘,重新分区磁盘等等都会造成数据的丢失.更严重的数据丢失是存储介质硬件损坏,例如,硬盘不小心摔坏了.硬盘根本就不认了.硬盘有大量坏道等等.最值得注意的一点是,一旦意识到数据丢失了,立刻停止一些不必要的

ASP字符串转换为整形、双精度型、布尔_应用技巧

Rem 将字符串转换为整形数据 function toInteger(str,num)         str=trim(str)         if str="" or not isnumeric(str) then               toInteger=num         else               toInteger=clng(str)         end if end function Rem 将字符串转换为双精度型数据 function toDo