首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

如何理解 unsigned char mask = 1 << (i - 1)

2012-05-12 
怎么理解 unsigned char mask 1 (i - 1)for(i8i0i--){mask 1 (i - 1)//不理解 这个意思……

怎么理解 unsigned char mask = 1 << (i - 1);
for(i=8;i>0;i--)
{
 mask = 1 << (i - 1); //不理解 这个意思
…… 

}
怎么理解?



[解决办法]
第1次循环:mask的第7位置1,即为0x80,10000000b
第2次循环:mask的第6位置1,即为0x40,01000000b
第3次循环:mask的第5位置1,即为0x20,00100000b
第4次循环:mask的第4位置1,即为0x10,00010000b
第5次循环:mask的第3位置1,即为0x08,00001000b
第6次循环:mask的第2位置1,即为0x04,00000100b
第7次循环:mask的第1位置1,即为0x02,00000010b
第8次循环:mask的第0位置1,即为0x01,00000001b
[解决办法]

探讨

第1次循环:mask的第7位置1,即为0x80,10000000b
第2次循环:mask的第6位置1,即为0x40,01000000b
第3次循环:mask的第5位置1,即为0x20,00100000b
第4次循环:mask的第4位置1,即为0x10,00010000b
第5次循环:mask的第3位置1,即为0x08,00001000b
第6次循环:mask的第2位置1,即为0x04,……

[解决办法]
探讨

第1次循环:mask的第7位置1,即为0x80,10000000b
第2次循环:mask的第6位置1,即为0x40,01000000b
第3次循环:mask的第5位置1,即为0x20,00100000b
第4次循环:mask的第4位置1,即为0x10,00010000b
第5次循环:mask的第3位置1,即为0x08,00001000b
第6次循环:mask的第2位置1,即为0x04,……

[解决办法]
第1次循环:mask的值左移7位
第2次循环:mask的值左移6位
第3次循环:mask的值左移5位
第4次循环:mask的值左移4位
第5次循环:mask的值左移3位
第6次循环:mask的值左移2位
第7次循环:mask的值左移1位
第8次循环:mask的值左移0位

[解决办法]
<<是左移位符,i-1表示移位次数,楼上上面说的都对。
[解决办法]
嗯, 每次循环 mask 8位中的1位为"1", 用于...中的操作.

热点排行