• C语言中负数的补码存储(1000 0000 表示128)


    计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理

    • 正整数的补码是其二进制表示,与原码相同;
    • 求负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1;

    示例:负数-1, (此处,假设是8位二进制表示)
    对应正数的原码:0000 0001
    取反: 1111 1110
    加1  : 1111 1111
    最终,-1是以1111 1111的形式进行存储的。

    负数-127, (此处,假设是8位二进制表示)
    对应正数的原码:0111 1111
    取反: 1000 0000
    加1  : 1000 0001
    最终,-127是以1000 0001的形式进行存储的。

    关于-128:

    -1补码是1111 1111再减127,即 1000 0000 表示-128的补码(8位二进制表示的最小负数)

    unsigned char 范围 0 - 255
    signed char 范围 -128 到 127

    无符号的 0000 0000 (0)有符号数里表示 +0

    无符号的 0111 1111 (127)有符号数里表示 +127

    无符号的 1000 0000 (128)有符号数里表示 -128 (8位二进制表示的最小负数)

    无符号的 1000 0001 (129)有符号数里表示 -127

    无符号的 1111 1111 (255)有符号数里表示 -1

    参考:

    https://www.runoob.com/cprogramming/c-data-types.html C语言教程-数据类型

    https://blog.csdn.net/u010603798/article/details/78962666 C语言中负数的存储

    https://baike.baidu.com/item/%E8%A1%A5%E7%A0%81/6854613 补码

    https://www.zhihu.com/question/28685048 补码10000000为什么可以表示-128?

    如果没有一直坚持,也不会有质的飞跃,当生命有了限度,每个人的价值就会浮现。

    船长博客,期待共同交流提高!

    本文如对您有帮助,记得点击右下边小球【赞一下】,热烈期待您关注博客 n(*≧▽≦*)n

  • 相关阅读:
    iOS 检测版本更新(02)
    iOS开发之检查更新
    Core Location :⽤用于地理定位
    TCP与UDP区别
    iOS设计模式之观察者模式
    联系人案例
    ksoap调用webservice
    Android获取内置sdcard跟外置sdcard路径
    百度sdk定位不成功,关闭定位
    PinnedHeaderListView实现删除
  • 原文地址:https://www.cnblogs.com/v5captain/p/15580146.html
Copyright © 2020-2023  润新知