搜索
博主信息
博文 13
粉丝 0
评论 0
访问量 15498
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
二进制中的若干问题
so的博客
原创
1422人浏览过

1. 给定n位有符号二进制数,则它能表达的数值范围为 -2^(n-1) ~ (2^(n-1))-1, 为什么负整数比正整数多一个呢?

    比如8位,最高位为符号位,所以:

            正数表示的范围为 0~(2^7-1) => 0~127,  0表示为 0000000 

            负数也可以从 10000000 ~ 11111111 ,此时出现了-0,而-0没有任何价值,就将-0看成-2^(7-1), 即-0=> -128


2. 原码: 正数-》本身,符号位为0   负数-》本身,符号位为1

    反码: 正数-》本身, 负数-》符号位不变,数据位各位取反

    补码:正数-》本身, 负数-》符号位不变,数据位各位取反,再加1

  补码求法: 从右边复制位,直到有1被复制,然后,反转其余的位。

     


3. 为什么要使用补码?

    计算机对符号位的识别很困难,于是让符号位也参加运算,一个正数减去一个数相当于加上一个负数,即 1-1 = 1+ (-1)=0, 所以机器只有加法没有减法。

    a. 使用原码

    1-1 = 1+(-1) = [00000001]原  + [10000001]原 = 无法确定符号位

    b. 使用反码

    1-1 = 1+(-1) =[00000001]反  + [11111110]反  = [11111111]反 = [10000000]原  = -0

    对于0而言,存在+0和-0,而0带符号没有任何意义,而且会有[00000000]原 与[10000000]原两个表示

    c. 使用补码

    1-1 = 1+(-1) = [00000001]补 + [11111111]补  = [00000000]补 = [00000000]原 = 0  

    这样 -0就不存在了,可以用 [10000000]表示-128

    -1 + (-127) = [11111111]补 + [10000001]补  = [10000000]补  = -128, 注意-128不存在原码和反码表示。


4.  补码正确性的数学原理

同余数理论,好比时钟:

 

回拨2小时 = 前拨10小时

   

回拨4小时 = 前拨8小时

   

回拨5小时= 前拨7小时

                                 

5. 浮点数转换成2进制

0.4 =》0.01110001 无穷

    


 


本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学