• C语言基础(4)-原码,反码,补码及sizeof关键字


     1. 原码

    +7的原码是0000 0111

    -7的原码是1000 0111

    +0的原码是0000 0000

    -0的原码是1000 0000

    2. 反码

    一个数如果值为正,那么反码和原码相同。

    一个数如果为负,那么符号位为1,其他各位与原码相反

    +7的反码0000 0111

    -7的反码1111 1000

    -0的反码1111 1111

    3. 补码

    原码和反码都不利于计算机的运算,如:原码表示的7-7相加,还需要判断符号位。

    正数:原码,反码补码都相同

    负数:最高位为1,其余各位原码取反,最后对整个数 + 1

    -7的补码:=

    1000 0111(原码)

    1111 1000(反码)

    1111 1001(补码)

    +0的补码为00000000

    -0的补码也是00000000

    根据负数的补码求原码:补码符号位不变,其他位求反,最后整个数 + 1,得到原码

     

     

     

    用补码进行运算,减法可以通过加法实现

    7-6=1

    7的补码和-6的补码相加:00000111 + 11111010 = 100000001

    进位舍弃后,剩下的00000001就是1的补码

    -7+6 = -1

    -7的补码和6的补码相加:11111001 + 00000110 = 11111111

    11111111-1的补码

    4.sizeof关键字

    sizeof不是函数,所以不需要包含任何头文件,计算一个数据类型的大小,单位:BYTE

    其实C语言不规定具体数据类型的大小,所以数据类型实际的大小和系统是息息相关的,但是相同的系统下,同数据类型大小一定是一样的。

    size_t类型在32位操作系统下是unsigned int,就是一个无符号的整数。当我们写程序要处理一个不可能出现负值的时候,一般用无符号数,这样可以增大数的表达最大值。

  • 相关阅读:
    POJ 3970(最小公倍数LCM)
    06005_Jedis入门
    雷林鹏分享:C# 字符串(String)
    雷林鹏分享:C# 类(Class)
    雷林鹏分享:C# 枚举(Enum)
    雷林鹏分享:C# 运算符重载
    雷林鹏分享:C# 多态性
    雷林鹏分享:C# 命名空间(Namespace)
    雷林鹏分享:C# 接口(Interface)
    雷林鹏分享:C# 正则表达式
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/6229360.html
Copyright © 2020-2023  润新知