#include<stdio.h> int main() { /*************************************** * 9的二进制是:b1001 * 5的二进制是:b0101 **************************************/ printf("二进制0b1001是:%d ",0b1001); printf("二进制0b0101是:%d ",0b0101); /*************************************** * 按位与运算符:&,两个数字相同位全部为1时,结果位为1 * * 1001 * 0101 * -------- * 0001 **************************************/ printf("9与5(9 & 5)的值为:%d ",9 & 5); /*************************************** * 按位或运算符:|,两个数字相同位只要有一个数字为1,结果位为1 * * 1001 * 0101 * -------- * 1101 **************************************/ printf("9 或 5 (9 | 5)的值为:%d ",9 | 5); /*************************************** * 按位异或运算符:^,两个数字相同位只要不相同,结果位为1 * * 1001 * 0101 * -------- * 1100 **************************************/ printf("9 异或 5 (9 ^ 5)的值为:%d ",9 ^ 5); /*************************************** * 按位取反运算符:~,数字位0变1,1变0 * 9的完整二进制: * ~0000 0000 0000 0000 0000 0000 0000 0000 1001 * 1111 1111 1111 1111 1111 1111 1111 1111 0110 * **************************************/ printf("9按位取反(~9) 的值为:%d ", ~9 ); /*************************************** * 左移运算符:<<,最高位舍去,低位补0 * 9的完整二进制: * 0000 0000 0000 0000 0000 0000 0000 0000 1001 * 9 << 1 * 0000 0000 0000 0000 0000 0000 0000 0001 0010 * **************************************/ printf("9左移1位 (9 << 1) 的值为:%d ", 9 << 1 ); /*************************************** * 右移运算符:>>,底为舍去,符号位不变,一般情况下其它位用符号位补全 * 9的完整二进制: * 0000 0000 0000 0000 0000 0000 0000 0000 1001 * 9 << 1 * 0000 0000 0000 0000 0000 0000 0000 0000 0100 * **************************************/ printf("9右移1位(9 >> 1) 的值为:%d ", 9 >> 1 ); return 0; }
二进制0b1001是:9 二进制0b0101是:5 9与5(9 & 5)的值为:1 9 或 5 (9 | 5)的值为:13 9 异或 5 (9 ^ 5)的值为:12 9按位取反(~9) 的值为:-10 9左移1位 (9 << 1) 的值为:18 9右移1位(9 >> 1) 的值为:4