C语言基本概念

本文介绍了计算机中的基本单位位(bit)和字节(Byte),包括它们的关系以及二进制数的表示方法,如原码、反码、补码。此外,还详细讲解了小数的二进制表示,并阐述了位运算,如按位与(&)、按位或(|)、按位异或(^)和移位操作(左移<<和右移>>)

位(bit)

bit中文名称是位,音译比特,是用以描述电脑数据量的最小单位。二进制数系统中,每个01就是一个位(bit)。bit缩写为b

字节(Byte)

字节(Byte)计算机信息技术用于计量存储容量和传输容量的一种计量单位,一个字节等于8二进制数Byte缩写为B

1KB = 1024 Bytes = 1024 * 8 bits

1kb = 1024 bits

1Bps = 1 Bytes/s = 1 * 8 bps = 1 * 8 bits/s

1bps = 1 bits/s

二进制数的表示

  • 最高有效位/最高位: 最左边的一位
  • 最低有效位/最低位: 最右边的一位
  • 原码

        只将最高位作为符号位(0:正;1:负),其余各位是该数的绝对值。

        如:

            +7 的原码:    00000111

            -7 的原码:    10000111

  • 反码

            一个数如果为正,则它的反码与原码相同。一个数如果为正,则它的反码是:符号位为1,其余各位是对原码取反。

            如:

                -7 的反码:    111110000

                +0 的反码:    00000000

                -0 的反码:    11111111

  • 补码

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

                负数:最高位为1,其余各位为原码的相应位取反,然后对整个数加1。

                如:

                    -7 的原码:    10000111

                    -7 的补码:    11111001

                    (stage1 原码取反: 11111000; stage2整个数加1:11111001)

小数的二进制表示

整数部分的表示如上,小数部分*2得到的整数部分为1则二进制的值为1,否则为0。如:8.25可表示为1000.01 (8(十进制)=>1000(二进制),0.25(十进制)=>0.01(二进制))

位运算

  • 按位与(&) (有将特定位置0的作用)

    如果相应位都为1,则该位的结果为1,否则为0。

        0 & 0 = 0       0 & 1= 0      1 & 0 = 0      1 & 1 = 1

  • 按位或(|) (有将特定位置1的作用)

    如果相应位只要有一个为1,则该位的结果为1,否则为0。

        0 & 0 = 0       0 & 1= 1      1 & 0 = 1      1 & 1 = 1

  • 按位异或(^) (有将特定位翻转的作用)

    如果参加运算的两个相应位同号,则结果位为0;异号则为1。

        0 & 0 = 0       0 & 1= 1      1 & 0 = 1      1 & 1 = 0

  • 取反(~)

    对一个二进制数按位取反,即0变1,1变0。

        ~0 = 1         ~1 = 0

  • 左移(<<)

    将一个二进制数全部向左移动n位,右补0,高位左移后溢出,舍弃。

  • 右移(>>)

    将一个二进制数全部向右移动n位,最低位移出,最高位分以下算术右移和逻辑右移,其行为不同。

    n  逻辑右移:各位按位右移,最低位向右移出,最高位(符号位)不变,最高位产生的其他空位补0。

    n  算术右移:各位按位右移,最低位向右移出,最高位(符号位)不变,最高位产生的其他空位与原最高位(符号位)一致。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值