设置各位值。

来源:互联网 发布:我是谁 知乎 编辑:程序博客网 时间:2024/06/06 19:41

想依次从某第一bit(最左边的)到最后一bit的为1,其他位为0.怎么弄呢?

当然可以搞个对照map或数组什么的。不过总感觉不正常,正好试着用下bitset。

bitset<32>后默认为全为0,set(n)则n为为1,reset反之。结果测试的从第一位设置到第三十二位,to_ulong()后的数值确实是从“0x00000001”到“0x80000000“。但是在2003平台下,其内存为缺不如值显示的,如1对应的值是“0x01000000”,它要是最高位为1也罢了,直接掉下序用htonl就好了,但是它是第8位为1。值的(1、2、4、8、16、32……)对应的是(左8,左7……左1,左16,左15……左9,左24……)。

其实解决也简单,反过来呗,从bitset::set(31)减至set(0),后再htonl就好了。

要是多于32位呢?反正memcpy,移呗。这时候想,当然也可以只用一个字节,这就不存在字节序问题了,然后,复制时候移位就好了。

原创粉丝点击