我是靠谱客的博主 爱听歌绿茶,最近开发中收集的这篇文章主要介绍原码、反码和补码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

n原码

将最高位作为符号位(以0代表正,1代表负),其余各位代表数值本身的绝对值(以二进制表示)。
            为了简单起见,我们用1个字节来表示一个整数。
            +7的原码为: 00000111
             -7的原码为: 10000111
    问题:
           +0的原码为:             00000000
            -0的原码为:             10000000

n 反码
一个数如果为正,则它的反码与原码相同;一个数如果为负,则符号位为1,其余各位是对原码取反。
            为了简单起见,我们用1个字节来表示一个整数。
            +7的反码为: 00000111
             -7的反码为: 11111000
    问题:
           +0的反码为:             00000000
            -0的反码为:             11111111

n 补码
利用溢出,我们可以将减法变成加法。
    对于十进制数,如果从9得到结果5,可以用减法:
         9-4=5
      因为4+6=10,我们将6作为4的补数,将上式的减法改写为加法:
         9+6=15
      去掉高位1(也就是减去10),得到结果5。
      对于16进制数,如果从C得到结果5,可以用减法:
         C-7=5
      因为7+9=16,我们将9作为7的补数,将上式的减法改写为加法:
         C+9=15
      去掉高位1(也就是减去16),得到结果5。

在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为:
           1 00000000
    进位1被丢弃。

一个数如果为正,则它的原码、反码、补码相同;一个数如果为负,则符号位为1,其余各位是对原码取反,然后整个数加1。
            为了简单起见,我们用1个字节来表示一个整数。
            +7的补码为: 00000111
             -7的补码为:11111001
    +0的补码:              00000000
            -0的补码:第1步    11111111
                                 第2步 1 00000000
                                第3步   进位1被丢弃


已知一个负数的补码,将其转换为十进制数,步骤:
      1、先对各位取反;
      2、将其转换为十进制数;
      3、加上负号,再减去1。
      例如:
      11111010,最高位为1,是负数,先对各位取反得00000101,转换为十进制数得5,加上负号得-5,再减1得-6。



最后

以上就是爱听歌绿茶为你收集整理的原码、反码和补码的全部内容,希望文章能够帮你解决原码、反码和补码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部