- 浏览: 131094 次
- 性别:
- 来自: 吉林
文章分类
- 全部博客 (118)
- oracle数据库 (5)
- Web前端 (3)
- java后台 (6)
- Java虚拟机 (3)
- 大数据 (1)
- Java (27)
- 微信公众号 (1)
- ssh框架 (2)
- Java,eclipse (1)
- Hibernate (4)
- SSH (4)
- asp.net (1)
- XML,JSON (1)
- junit (1)
- SpringMVC (2)
- XML (2)
- JSON (2)
- HTTP AJAX POST请求 (2)
- request payload (1)
- form data (1)
- Content Type (1)
- Spring RESTful (1)
- RESTful (2)
- Git (2)
- 企业软件版本管理工具 (1)
- HIVE,HADOOP (1)
- Hadoop (1)
- Dobbo (1)
- 缓存(cache) (1)
- 服务器端,客户端 (1)
- Cookie (1)
- Session (1)
- MySQL索引 (1)
- 乐观锁,悲观锁 (1)
- 电子商务 (1)
- 面试部分 (1)
- 分布式事务处理 (1)
- java详解 (1)
- commons (1)
- NoClassDefFoundErrorLogFactory (1)
- Spring (1)
- tomcat (3)
- Ubuntu (1)
- 虚拟机 (1)
- Intel Virtual Technology (1)
- SVN (4)
- Taglib (5)
- java unsigned类型 (1)
- fmt (1)
- HMAC (1)
- linux (13)
- mysql (2)
- FTP (4)
- Maven (5)
- spring boot (6)
- myeclipse (1)
- web (1)
- Https (2)
- ssl (3)
- crt (1)
- cer (1)
- byte (1)
- 字符占字节 (1)
- 限制IP远程登录 (1)
- 禁止某些 IP 访问 (1)
- iptables (1)
- linux私钥登陆 (1)
- windows (1)
- openSSH (2)
- 大牛博客地址 (1)
- Maven常见异常 (1)
- shell命令 (1)
- WebWork2,Spring MVC (1)
- LinuxSS (0)
- Bitvise SSH Client (1)
- -bash-4.1$ (1)
- Centos7 (1)
- MQTT (5)
- Mosquitto (3)
- Mosquittos (0)
- HAProxy (1)
- 集群 (0)
- 负载均衡 (1)
- moqutte (1)
- 多线程 (1)
- Queue (1)
- BlockingQueue (1)
- ConcurrentLinkedQueue (1)
- erlang (1)
- jersey (1)
最新评论
今天在看base64编码转换时,既然对负数的二进制表示有些遗忘,在网上找了一下资料,贴出来已备在此遗忘:
假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。
现在想知道,-5在计算机中如何表示?
在计算机中,负数以其正值的补码形式表达。
什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。
称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。
再举一例,我们来看整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码: 11111111 11111111 11111111 11111110
3、得补码: 11111111 11111111 11111111 11111111
可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF
//==============================================================
//以下是Based64转码,在http传输的时候用得比较多。
发表评论
-
启动tomcat 一直在控制台输出 No mapping found for HTTP request with URI
2016-12-23 11:21 4075启动tomcat 一直在控制台输出 No mapping fo ... -
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory 解决方案
2016-12-23 11:14 876Spring3.1启动时报错: Exception in t ... -
理解RESTful架构
2016-10-14 11:48 507越来越多的人开始意识 ... -
Spring RESTful服务接收和返回JSON最佳实践
2016-10-14 09:51 503返回JSON 1) 用Maven构建web项目: 构建过程 ... -
IE10以下的IE浏览器在form表单提交、a标签等场景下,接收application/json类型的响应时,会提示是否要下载该json文件
2016-10-13 15:35 597IE10以下的IE浏览器在form表单提交、a标签等场景下,接 ... -
SpringMVC如何接收application/json内容编码类型的参数?
2016-10-13 15:35 716[size=medium] 在上代码之前,有必要先说说@Res ... -
详解java类的生命周期
2016-04-28 10:16 492[size=small]引言 最近有 ... -
Struts+Spring+Hibernate整合入门详解
2016-04-28 10:18 446Java 5.0 Struts 2.0.9 Spring ... -
switch语句中的表达式
2016-04-28 10:18 714switch语句中的表达式只能是byte,short,char ... -
常见的几种RuntimeException
2016-04-27 14:13 413一般面试中java Exception(runtimeExce ... -
Java陷阱一箩筐----面试题集
2016-04-27 13:52 424找工作要面试,有面试就有对付面试的办法。以下一些题目来自我和我 ... -
控制层SpringMVC和Struts2的区别
2016-04-26 16:24 469我们现在流行的常用的M ... -
MyBatis快速入门
2016-04-26 16:12 366只为成功找方法,不为失败找借口! MyBatis学习总结(一) ... -
Integer.toString(int par1,int par2)
2016-04-25 14:44 367Integer.toString(int par1,int ... -
Java中堆内存和栈内存详解
2016-04-01 10:32 482Java把内存分成两种,一 ... -
Java关键字final、static使用总结
2016-03-24 11:24 365Java关键字final、static使 ... -
JAVA——Class对象的三种生成方式
2016-03-23 16:18 478Class类(在java.lang包中,Instances o ... -
Java内部类
2016-03-22 16:28 326http://www.cnblogs.com/yaoyingl ... -
java中的内部类总结
2016-03-22 16:02 451内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个 ... -
java面试题
2016-03-22 13:18 424http://www.blogjava.net/supercr ...
相关推荐
补码表示法是一种常用的二进制表示法,它将负数表示为其补码的形式。补码是将二进制数的每一位取反,然后加 1 得到的结果。例如,二进制数 1010 的补码是 0101 加 1 得到的 0110。 在 dec2binPN 函数中,我们首先...
* 正数的二进制表示形式的第一位数字为 0,而负数的二进制表示形式的第一位数字为 1。 * 将十进制数转换成其他进制可以使用 Java 语言中的 Integer.toBinaryString()、Integer.toHexString()、Integer.toOctalString...
接着,我们使用按位取反的方法来生成负数的二进制数。最后,我们将处理完的十进制数转换为二进制数,并将其输出。 在 Matlab 中,可以使用以下代码来调用该函数: ```matlab clc % 输入的十进制数,可以是正数也...
在Delphi编程语言中,处理这种二进制表示负数的过程可以通过内置函数或者自定义算法来实现。Delphi提供了诸如IntToBin和BinToInt这样的函数,用于在十进制和二进制之间进行转换。然而,当你需要处理负数时,这些内置...
总结来说,负数的二进制表示是通过符号位和2的补码实现的,这使得计算机能够高效地执行加法和减法运算,同时处理溢出情况。对于编程和系统设计人员,理解和掌握这些基本概念是至关重要的,因为它们构成了现代计算机...
因此,负数的二进制表示方法成为计算机科学的一个核心话题。 在计算机中,负数的表示有几种不同的方式,包括原码、反码和补码。原码是最直观的表示方法,它将数值直接转换为二进制形式。然而,原码表示法在进行数学...
本文将深入探讨浮点数的二进制表示,并通过一个源代码实例介绍如何进行浮点数与二进制之间的转换。 浮点数的二进制表示遵循IEEE 754标准,该标准定义了单精度(32位)和双精度(64位)浮点数的格式。对于单精度...
对于小数的进制转换,通常会涉及到浮点数的二进制表示,如IEEE 754标准。Java并没有直接提供将十进制小数转换为其他进制的内置方法,但可以通过一些数学运算和位操作实现。例如,将十进制小数转换为二进制通常需要...
### C语言浮点数的二进制表示 #### 前言 在计算机科学领域,尤其是在编程语言如C语言中,了解数据类型的底层实现是非常重要的。对于浮点数而言,其内部表示方式决定了如何准确地处理数值计算。本文将深入探讨C语言...
在补码表示中,负数是通过对其绝对值的二进制表示逐位取反(除了最高位,即符号位保持不变)后再加1来获得的。这确保了加法和减法运算的简单性和一致性。 以下是`dec2binPN()`函数的详细工作原理: 1. **输入参数*...
通过查看"floatbin"的源代码,开发者可以学习如何解析和构建浮点数的二进制表示,理解指数和尾数的计算方法,以及如何处理溢出和下溢等异常情况。此外,对于理解和优化浮点数运算,以及深入学习计算机体系结构和编译...
任意输入一个十进制整数,包括正数负数,通过程序实现可以输出相应的二进制编码
这种方法适用于大部分情况,但不适用于负数,因为负数的二进制表示是补码形式。 为了处理负数,我们可以使用`std::bitset`类,它是C++标准库的一部分,能方便地处理二进制数据: ```cpp #include std::string ...
在编程中,调试工具可以帮助我们查看变量的二进制、八进制、十六进制或十进制表示,以便理解其实际值。 6.7 本章小结 进制转换虽然看似简单,但却是理解计算机底层工作原理的关键。掌握不同进制间的转换有助于我们...
本文通过一个具体的Java程序实例,详细介绍了如何将十进制数(包括正数和负数)转换为二进制表示的方法。通过对程序逻辑的逐步分析,我们不仅学习了基本的转换过程,还深入了解了负数在计算机中的补码表示方式。这种...
3. **负数的二进制表示**: 在计算机中,负数通常使用二进制补码表示。补码是将正数的二进制表示按位取反(0变1,1变0),然后加1得到的。对于负数,最高位(符号位)通常设置为1,表示这是一个负值。 4. **C++...
将所有余数倒序排列,得到的就是二进制表示。对于负数,可先将其转换为正数进行计算,再在前面加上负号。 ```cpp #include #include std::string decimalToBinary(int num) { std::bitset<32> bits(num); ...
在实际应用中,可能还需要考虑一些额外的问题,比如数据验证(确保输入的是有效的二进制字符串)、错误处理(处理除法溢出、负数等特殊情况)、性能优化(对于大量数据的快速转换)等。这些都是提高代码质量、可靠性...