关于bitset中低阶位与高阶位的理解

本文深入解析bitset中高阶位与低阶位的概念,通过实例对比bigendian和smallendian排序方式,清晰阐述位串排列顺序对理解bitset的重要性。

C++ Primer中介绍bitset时有这么一句话:“(bitset<32> bitvec)以0位开始的位串是低阶位(low-order bit),以31位开始的位串是高阶位(high-order bit)。”


以下是摘自一位大神的理解:


计算机里面的位串有两种排列顺序,即big endian和small endian,也就是你所说的高阶位和第阶位。

举一个例子,你可能就明白了。
比如说位串 0101,一共有4位,它的值的十进制是5。5 = 0*2^3 + 1*2^2 + 0*2^1 + 1*2^0。从左到右,其阶依次为3, 2, 1, 0。

如果我们按从左到右的顺序把这4个bit放到bitset中(高阶放到了低位,低阶放到了高位),那就是 bitvec[0] = 0, bitvec[1]=1, bitvec[2]=0, bitvec[3]=1。很明显,bitvec[3]的阶位是0,最低,bitvec[0]的阶是3,最高。所谓以xx位开始的,也就是说xx位的阶是0。在我们这个例子中,bitvec[3]的阶是0,那就是一个big endian排序。 

如果我们按从右到左的顺序把这5个bit放到bitset中(低阶放到了低位,高阶放到了高位),那就是bitvec[0]=1, bitvec[1]=0, bitvec[2]=1, bitvec[3]=0。 也就是说bitvec[0]是其最低阶, bitvec[3]是最高阶。很明显我们的0101串应该从bitvec[0]开始, 就是一个small endian的bit排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值