大佬教程收集整理的这篇文章主要介绍了c – 为什么std :: bitset的位是相反的顺序?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
int binary_to_dec(std::string bin) { std::bitset<8> bit; int c = bin.size(); for (size_t i = 0; i < bin.size(); i++,c--) { bit.set(c-1,(bin[i]-'0' ? true : falsE)); } return bit.to_ulong(); }
如果我们以小数排序编写我们的数字,那么您不会有这种混淆,因为字符串索引为0的字符将表示位组的位0.但是我们以大排序的顺序编写我们的数字.恐怕我不知道导致这个公约的人类历史的细节. (请注意,任何特定的cpu用于存储多字节数字的字符串是无关紧要的,我在谈论在显示人类阅读的数字时使用的字节数.)
例如,如果我们用二进制写十进制数12,我们得到1100.最低有效位在右边.我们称之为“位0”.但是,如果我们把它放在一个字符串“1100”中,则该字符串的索引号0的字符表示位3,而不是位0.如果我们以与字符相同的顺序创建了一个位组,那么to_ulong将返回3的12.
bitset类具有接受std :: String的构造函数,但它希望字符的索引与位的索引匹配,因此您需要反转字符串.尝试这个:
int binary_to_dec(std::string const& bin) { std::bitset<8> bit(std::string(bin.rbegin(),bin.rend())); return bit.to_ulong(); }
以上是大佬教程为你收集整理的c – 为什么std :: bitset的位是相反的顺序?全部内容,希望文章能够帮你解决c – 为什么std :: bitset的位是相反的顺序?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。