二进制位置0或者置1 ///* //编写代码将13二进制序列的第5位修改位1,然后改回0 //*/ ///*int main() //{ // int a = 13; // //00000000000000000000000000001101 // //00000000000000000000000000010000 // //00000000000000000000000000000001---1的原码 // int n = 5; // a= a|(1 << (n - 1));//把1的二进制数列向左移动四位就得 // //到第二行的代码 // ///* | 按位或,有1就是1,两个0才是0 //这样就可以把第一个二进制数列的从右到左的第5个数字改成1 //a= a|(1 << (n - 1))按位或完,再重新为a赋值 //*/ ///* printf("%d\n", a); // return 0; //}*/ // 将第5为改回0 给这一位&0就行了,其他位保持不变 //int main() //{ // int a = 13; // //00000000000000000000000000001101 // //00000000000000000000000000010000 // //00000000000000000000000000000001---1的原码 // // //&两个1才是1,有0就是0 // // 只能改变第5位数字,其他的不能变 // //00000000000000000000000000011101--第一次改变的原码 // //11111111111111111111111111101111 // //00000000000000000000000000001101--按位与后的结果 // int n = 5; // //这个代码就是1向左移动4位再取反后的结果 // //11111111111111111111111111101111 // a &= ~(a << (n - 1)); // printf("%d\n", a); // return 0; //}