- 字节编码为低地址低字节、高地址高字节
printf("%d %f", 10.3, 10);//printf会按照给定的数据类型解析,输出-1717986918 0.000000
-
0000 0000 0000 0000 0000 0000 0000 0001 1的原码
-
1000 0000 0000 0000 0000 0000 0000 0001 -1的原码
-
0111 1111 1111 1111 1111 1111 1111 1110 -1的反码
-
1111 1111 1111 1111 1111 1111 1111 1111 -1的补码
-
1111 1111 1111 1111 1111 1111 1111 1111 4294967295的原码
int x = 4294967295;
int y = -1;
printf("%d %u", x, x);//输出-1 4294967295
printf("%d %u", y, y);//输出-1 4294967295
- 位操作
位操作包含与、或、异或、取反、左移和右移操作,在C语言中分别用操作符号 & | ^ ~ << >>
与操作可以用于清零:11 =>1 10=>0 01=>0 00=>0,与0000执行与操作可以清零
或操作:11=>1 10=>1 01=>1 00=>0
异或操作可以用于交换两个变量的值:相同为0不同为1
取反操作:将各个比特位取反
左移:原数值乘以2
右移:原数值除以2
int a = 3; //a = 0011
int b = 9; //b = 1001
a = a^b; // a = 1010
b = b^a; // b = 0011
a = a^b; // a = 1001
- 位运算实例
//输入任意整数,输出二进制
#include<stdio.h>
#include<stdlib.h>
int main()
{
unsigned int s = 1<<31; //s = 1000 0000 0000 0000 0000 0000 0000 0000
int n;
while(n != -1)
{
scanf("%d", &n);
if(n < 0) //负数时的处理
{
n = ~n + 1; //求补码
n = n | s; //设置符号位
}
for(int i = 0; i<32; i++)//逐一与各个比特位执行与算
{
if((n & s) == 0)
{
putchar('0');
}
else
{
putchar('1');
}
s >>= 1;
}
s = 1 << 31;
printf("\n");
}
return 0;
}