• 什么是原码、反码与补码?


    一字节数据可表示的范围是0--255,那么负数又怎么表示呢?在计算机中是这样规定的,用一个数的最高一位表示正负,0为正,1为负.如0111,1111转换为十进制为127,1111,1111为-127,由此我们知一字节的范围为-127--127,其他字节的范围类推. 上面讲的都是原码表示法,可在计算机中的数据都是以补码存放的,只有这样才能减轻cpu的负担.提到补码,就不得不提反码了.计算机中是这样规定反码的,如果是正数,则按原码形式不变,如127仍为0111,1111;而如果为负数则,第一位为1,其他各位取反(即0变为1,1变为0),如原码-127(1111,1111),表示为1000,0000. 补码同上,如果是正数,则按原码形式不变,如127仍为0111,1111;如果为负数则除第一位为1外,其他各位取反加1,如-127,先取反为1000,0000,然后加1,为1000,0001.但1000,0000比较特殊,用它来表示-128,由此我们知补码可表示的范围是-128--127。 在计算机中,数据是以补码的形式存储的: 在n位的机器数中,最高位为符号位,该位为零表示为正,为1表示为负; 其余n-1位为数值位,各位的值可为0或1。 当真值为正时:原码、反码、补码数值位完全相同; 当真值为负时: 原码的数值位保持原样, 反码的数值位是原码数值位的各位取反, 补码则是反码的最低位加一。 注意符号位不变。 如:若机器数是16位: 十进制数 17 的原码、反码与补码均为:   0000000000010001 十进制数-17 的原码、反码与补码分别为:1000000000010001、1111111111101110、1111111111101111 正数:原码==反码==补码 负数:原码==数值位保持不变,符号位为1 反码==原码取反,符号位为1 补码==反码加一,符号位为1
  • 相关阅读:
    Nginx入门(三)——正向代理
    Nginx入门(二)——双机热备
    Socket
    TCP和UDP
    主线程等待子线程结束后再运行
    H5s播放rtsp和rtmp视频
    Thread.sleep()和Thread.currentThread().sleep()区别
    OpenLayer3入门——[一]
    事件绑定
    cmake和json安装
  • 原文地址:https://www.cnblogs.com/gxldan/p/4066655.html
Copyright © 2020-2023  润新知