我们也已经知道如何将一个10进制数如何转换为二进制数。
但是怎样用二进制表达一个负数呢?
比如,假设有一 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。我们就称后者是前者的反码,也可称前者是后者的反码,因为反码是相互的。
补码:反码加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。
分享到:
相关推荐
c++ 计算机底层 原码反码补码的练习题,包括答案
/* *功能实现任意二进制数的原码 反码 补码转换 *仅仅是字符串的操作,没有进行数字操作 *对-0的操作可能有问题 *ssfshine@gmail.com */
原码反码补码讲课.pptx
原码反码补码PPT学习教案.pptx
原码反码补码图解.原码反码补码图解.原码反码补码图解.
原码反码补码说课.pptx
进制转换及原码反码补码.docx
学习电脑信息原码反码补码详细解析
计算机数据进制转化(二进制 十进制 八进制 十六进制),以及机器码(原码 反码 补码)。
进制转换+原码反码补码参照.pdf
进制转换及原码反码补码练习题.doc
原码反码补码的定义PPT学习教案.pptx
JAVA基础补充(0)-原码反码补码
程序可将不限定位数的原码转成补码和反码,将反码转换成原码和补码,将补码转换成原码和反码,程序基于.NET 4.0,使用VS2012开发工具编写。
此文用于教学给学生看,欢迎专业人士来拍砖指正,避免本人陷于无知而不自知。
利用C++的MFC实现原码、补码、反码的转换
16进制(4位)到二进制原码、反码、补码计算
二进制-原码-补码-反码.pdf
数字的原码、反码和补码
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法.