修改指定位(bit)的值
#知识储备#
一:
二进制: 0b
八进制: 0
十六进制: 0x
1.二进制
例: int x = 0b1001; // x = 9
2.八进制
例:int y = 074; // x = 60
3.十六进制
例: int z = 0xa3; // x = 163;
除此之外在char类型字符的表示时也可以用 8进制数 或 16进制数,
例: char A = '\101' 这里 以\开头表述其后为八进制数 最终 '\101' == 65 == 'A'
例: char B = '\x42' 这里 以\x开头表述其后为十六进制数 最终 '\x42' == 66 == 'B'
二:
1.按位取反运算符~
~是一元运算符,对数据的每个二进制位取反 。例如: ~00011001=11100110
2.按位与运算符&(联系:离散中的合取连接词)
参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。即:
0&0=0,0&1=0,1&0=0,1&1=1
例如: 00110011 (十进制为1+2+8+16=27)
& 10101010
= 00100010
3.按位或运算符|(联系:离散中的析取连接词)
参与运算的两个值,只要两个相应位中有一个为1,则该位的结果为1。即:
0|0=0,0|1=1, 1|0=1, 1 |1=1
例如: 10100001
| 00010001
= 10110001
4.按位异或运算符^
参与运算的两个值,如果两个相应位相同,则结果为0,否则为1。即:
0^0=0, 1^0=1, 0^1=1, 1^1=0
例如: 10100001^00010001=10110000
(1)按位异或可以用来使某些特定的位翻转,如对数10100001的第2位和第3位翻转,可以将数与00000110进行按位异或运算。
10100001^00000110=10100111 //1010 0001 ^ 0x06 = 1010 0001 ^ 6
(2)通过按位异或运算,可以实现两个值的交换,而不必使用临时变量。例如交换两个整数a,b的值,可通过下列语句实现:
a=10100001,b=00000110
a=a^b; //a=10100111
b=b^a; //b=10100001
a=a^b; //a=00000110
代码实现:(十进制的输入,二进制打印)
浙公网安备 33010602011771号