需求是:将整数转化为16位的二进制数,然后将其中的第1位设置成1,然后再转化成整数。举个例子:
比如一个整数 21276。 转化成16位2二进制数为 0101001100011100将第一位设置成1 既—>1101001100011100
转化成整数为—>54044.希望高手指点,万分感激!!!!!
PS:目前进展如下 int a = 21276;
string aa = Convert.ToString(a, 2).PadLeft(16, '0');
比如一个整数 21276。 转化成16位2二进制数为 0101001100011100将第一位设置成1 既—>1101001100011100
转化成整数为—>54044.希望高手指点,万分感激!!!!!
PS:目前进展如下 int a = 21276;
string aa = Convert.ToString(a, 2).PadLeft(16, '0');
设置第一位就用位运算| 位逻辑或运算
是这意思么?
现在的情况是 1~16位中任何一位都可能需要设置成1或0(比如可能是第八位需要设置成0)。
10010001(二进制)| 11110000
Convert.ToString(j,2)
a |=32768;// 也可以写作 a = a | 32768。如果是第8位,就 a |= 64。
如果是第7位,就 a |= 32。
如果要设置0,就 &= ~32768;
。
int a = 32322; a |= 256;//10位
int a = 32322; a |= 128;//9位
int a = 32322; a |= 64;//8位
int a = 32322; a |= 32;//7位
。
。。设置成0的话。。
。
int a = 32322; a &= ~256;//10位
int a = 32322; a &= ~128;//9位
int a = 32322; a &= ~64;//8位
int a = 32322; a &= ~32;//7位
。
。。是这个意思吧
设置成零怎么会是&~32.....
设置成零应该是“与"的那位是零,其他位为1啊
http://msdn.microsoft.com/zh-cn/library/d2bd4x66(v=VS.80).aspx
~32 ->1111111110111111那么一个整数 1001100111101111
& 1111111110111111
起到了第7位为0 其它位不变的效果
也就是说10楼总结的没问题 是不
u |= ((ushort)1 << 15);
CSDN又出BUG了,明明昨天早已结贴,但现还是未结贴状态。
int a = 32322; a |= 128;//8位
int a = 32322; a |= 64;//7位
int a = 32322; a |= 32;//6位int a = 32322; a &= ~256;//9位
int a = 32322; a &= ~128;//8位
int a = 32322; a &= ~64;//7位
int a = 32322; a &= ~32;//6位