C++中如何将一串二进制数字中的每一个数字单独赋值给数组?

inti=10101010;inta[7];将i的每一位作为一个元素赋值给数组a[7].使得a[7]={1,0,1,0,1,0,1,0};错了,是a[8]... int i=10101010;
int a[7];
将i的每一位作为一个元素赋值给数组a[7].使得a[7]={1,0,1,0,1,0,1,0};
错了,是a[8]
展开
 我来答
百度网友e096309
2016-10-28 · TA获得超过1327个赞
知道小有建树答主
回答量:501
采纳率:96%
帮助的人:410万
展开全部
第一,一个int有32位,不止7位。
第二,可以用位操作运算符

取第n位(最低位为第0位)的方法为 (i & (1 << n)) >> n.
其中<<表示左移,1<<n表示1左移n位,比如1<<3就变成二进制的1000。
&表示按位与,比如二进制的 1001 & 1000 就得到 1000 (第0位跟第0位与,第1位跟第1位与,以此类推)
>>表示右移,比如二进制的1000 >> 2 就变成二进制的0010
所以上面的表达式的意思是把1左移n位,然后跟i按位与,这相当于除了第n位保留原值,其他位都填0。
然后把与之后的结果右移n位,相当于把第n位的值挪到第0位上。

所以,取二进制的方法为:
int i = 123456789;
int a[32];
for(int n=0; n<32; n++) {
a[n] = (i & (1 << n)) >> n;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式