关于 bitset类型 的两个问题
我要编一个密码学作业,要用到bitset类型,
我创建了一个64位的bitset类型
bitset<64> CipherWord=0x0101010101010101;
=========================================================
但是编译时出现警告
warning C4305: 'argument' : truncation from 'unsigned __int64' to 'unsigned long'
warning C4309: 'argument' : truncation of constant value
赋值的结果也没到预期期望===>初值被切断了
CipherWord [64](1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) std::bitset<64>
没有达到预期期望
==========================================================
为什么会产生这种错误,怎么解决?
即使 bitset<64> CipherWord=0x0101010101010101ul;也不行,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
第二个问题
为什么对于bitset类型,用传统的调用构造函数的方法不行,也就是:
bitset<64> CipherWord.bitset(...);
而必须得用其特定的形式:
bitset<64> x=....;
bitset<64> x('');
难道bitset是一个很特殊的类吗?
谢谢!