位运算
来源:互联网 发布:jxl导入excel到数据库 编辑:程序博客网 时间:2024/05/21 22:22
原来电脑只会二进制O(∩_∩)O哈!
这节课视频有点长,80分钟,可能是我感觉知识点都挺多的吧,也不能算多,就是可能我理解的不太好,然后我变写代码边有着疑问去做视频,嘿嘿,把出现问题来如何解决的过程呈现出来,这样会更加知道以后自己出现新问题的解决方法!
下面是简单的介绍了下进制:
1.十进制: 0,1,2,3,4,5,6,7,8,9
到10进一
1 + 9 = 10
2.八进制:
0,1,2,3,4,5,6,7
到8进一
7 + 1 = 10
3.二进制:
0,1
到2进一
1 + 1 = 10
4.十六进制:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
到16进一
F + 1 = 10
.................还有许多进制,例如:3,4,5,6,7,9,11,12,13,14,15,17,18,19,20,60,120,。。。进制的
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
例如:十进制
1212120 = 1 * 10^6 + 2 * 10^5 + 1 * 10^4 + 2 * 10^3 + 1 * 10^2 + 2 * 10^1 + 0 * 10^0
权:10^6,10^5,10^4,10^3,10^2,10^1,10^0
八进制
1212120 = 1 * 8^6 + 2 * 8^5 + 1 * 8^4 + 2 * 8^3 + 1 * 8^2 + 2 * 8^1 + 0 * 8^0
权:8^6,8^5,8^4,8^3,8^2,8^1,8^0
二进制
1011011 = 1 * 2^6 + 0 * 2^5 + 1 * 2^4 +1 * 2^3 + 0 * 2^2 + 1* 2^1 + 1 * 2^0
权: 2^6,2^5,2^4,2^3,2^2,2^1,2^0
.........进制的都是一样的,都是有规律可循的
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
例如:
十进制
2345.123 = 2 * 10^3 + 3 * 10^2 + 4 * 10^1 + 5 * 10^0 + <这里注意了>1 * 10^-1 + 2 * 10^-2 + 3 * 10^-3
二进制 1101.111 = 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 + <这里注意了>1 * 2^-1 + 1 * 2^-2 + 1 * 2^-3
其他进制也都是一样 的.....////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
这是讲解位运算时候出现的符号以及简便方法:
&(位)与|(位)或
~(位)取反
^(位)异或
<<左移
>>右移
左移一次增大2倍,右移一次减少2倍
全部都是2进制!!
添加:x = x|..
去除:x = x &~..
代码我就贴到下面了自己观看写一遍吧!:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
代码1:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, c;
int d, e, f;
a = 12; //00000000000000000000000000001100
b = 14; //00000000000000000000000000001110
c = a & b; //00000000000000000000000000001100
printf("%d\n", c);//12 //1100
c = a | b; //00000000000000000000000000001110
printf("%d\n", c);//14 //1110
d = 100; //1100100 -->00000000000000000000000001100100
e = ~d; //0011011 -->原码:11111111111111111111111110011011
// -->反码:10000000000000000000000001100100
// -->补码:10000000000000000000000001100101
printf("%d\n", e);//-101 //10000000000000000000000001100101
f = 33^44; //33:000000000000000000000000000100001
//44:000000000000000000000000000101100
// 000000000000000000000000000001101
printf("%d\n", f);//13
system("pause");
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
代码2:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
int b;
a = 13; //http://www.bcwhy.com/thread-21592-1-1.html //0000 0000 0000 0000 0000 0000 0000 1101
b = a<<1; //0000 0000 0000 0000 0000 0000 0001 1010
printf("%d\n", b); //26
b = 15; //0000 0000 0000 0000 0000 0000 0000 1111
a = b>>2; // 00 0000 0000 0000 0000 0000 0000 0011 //a+1 printf("%d\n", a);
printf("%d\n", a);//3
system("pause");
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
代码3:
/*
*0000 0000 0000 0000 0000 0000 1111 1011
*得到右边第4个数的值的头3个数值 11 1
*
*/
#include <stdio.h>
#include <stdlib.h>
unsigned Set(unsigned a, int p, int x)
{
//return a >> (p + 1 - x)&(~0 >> x); //|(0 >> x)
return a >> (p + 1 - x) | (0 >> x);
}
int main()
{
unsigned int a;
a = 251; //0000 0000 0000 0000 0000 0000 1111 1011
// 11 1
//0000 0000 0000 0000 0000 0000 0000 0000
//1111 1111 1111 1111 1111 1111 1111 1
printf("%d\n", Set(a, 5, 3));//31
system("pause");
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
代码4:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#define 小开关 1 // 0x1//0000 0000 0000 0000 0000 0000 0000 0001
#define 大开关 2 //0x2// 0000 0000 0000 0000 0000 0000 0000 0010
#define 密码开关 3 //0x3// 0000 0000 0000 0000 0000 0000 0000 0011
#define 主人开关 4 //0x4// 0000 0000 0000 0000 0000 0000 0000 0100
int main()
{
int 开关 = 0;
开关 = 开关 | 小开关;
开关 = 开关 | 大开关;
开关 = 开关 | 密码开关;
开关 = 开关 | 主人开关;
printf("%d\n", 开关); //7 //0000 0000 0000 0000 0000 0000 0000 0111
开关 = 开关 & ~小开关;
printf("%d\n", 开关); //6
MessageBoxA(NULL, "hello", "11111", 256|MB_ICONINFORMATION);
system("pause");
return 0;
}
end!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
学习需要努力,努力再努力---》写代码!!
视频地址http://www.bcwhy.com/thread-21592-1-1.html
这节课视频有点长,80分钟,可能是我感觉知识点都挺多的吧,也不能算多,就是可能我理解的不太好,然后我变写代码边有着疑问去做视频,嘿嘿,把出现问题来如何解决的过程呈现出来,这样会更加知道以后自己出现新问题的解决方法!
下面是简单的介绍了下进制:
1.十进制: 0,1,2,3,4,5,6,7,8,9
到10进一
1 + 9 = 10
2.八进制:
0,1,2,3,4,5,6,7
到8进一
7 + 1 = 10
3.二进制:
0,1
到2进一
1 + 1 = 10
4.十六进制:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
到16进一
F + 1 = 10
.................还有许多进制,例如:3,4,5,6,7,9,11,12,13,14,15,17,18,19,20,60,120,。。。进制的
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
例如:十进制
1212120 = 1 * 10^6 + 2 * 10^5 + 1 * 10^4 + 2 * 10^3 + 1 * 10^2 + 2 * 10^1 + 0 * 10^0
权:10^6,10^5,10^4,10^3,10^2,10^1,10^0
八进制
1212120 = 1 * 8^6 + 2 * 8^5 + 1 * 8^4 + 2 * 8^3 + 1 * 8^2 + 2 * 8^1 + 0 * 8^0
权:8^6,8^5,8^4,8^3,8^2,8^1,8^0
二进制
1011011 = 1 * 2^6 + 0 * 2^5 + 1 * 2^4 +1 * 2^3 + 0 * 2^2 + 1* 2^1 + 1 * 2^0
权: 2^6,2^5,2^4,2^3,2^2,2^1,2^0
.........进制的都是一样的,都是有规律可循的
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
例如:
十进制
2345.123 = 2 * 10^3 + 3 * 10^2 + 4 * 10^1 + 5 * 10^0 + <这里注意了>1 * 10^-1 + 2 * 10^-2 + 3 * 10^-3
二进制 1101.111 = 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 + <这里注意了>1 * 2^-1 + 1 * 2^-2 + 1 * 2^-3
其他进制也都是一样 的.....////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
这是讲解位运算时候出现的符号以及简便方法:
&(位)与|(位)或
~(位)取反
^(位)异或
<<左移
>>右移
左移一次增大2倍,右移一次减少2倍
全部都是2进制!!
添加:x = x|..
去除:x = x &~..
代码我就贴到下面了自己观看写一遍吧!:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
代码1:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, c;
int d, e, f;
a = 12; //00000000000000000000000000001100
b = 14; //00000000000000000000000000001110
c = a & b; //00000000000000000000000000001100
printf("%d\n", c);//12 //1100
c = a | b; //00000000000000000000000000001110
printf("%d\n", c);//14 //1110
d = 100; //1100100 -->00000000000000000000000001100100
e = ~d; //0011011 -->原码:11111111111111111111111110011011
// -->反码:10000000000000000000000001100100
// -->补码:10000000000000000000000001100101
printf("%d\n", e);//-101 //10000000000000000000000001100101
f = 33^44; //33:000000000000000000000000000100001
//44:000000000000000000000000000101100
// 000000000000000000000000000001101
printf("%d\n", f);//13
system("pause");
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
代码2:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a;
int b;
a = 13; //http://www.bcwhy.com/thread-21592-1-1.html //0000 0000 0000 0000 0000 0000 0000 1101
b = a<<1; //0000 0000 0000 0000 0000 0000 0001 1010
printf("%d\n", b); //26
b = 15; //0000 0000 0000 0000 0000 0000 0000 1111
a = b>>2; // 00 0000 0000 0000 0000 0000 0000 0011 //a+1 printf("%d\n", a);
printf("%d\n", a);//3
system("pause");
return 0;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
代码3:
/*
*0000 0000 0000 0000 0000 0000 1111 1011
*得到右边第4个数的值的头3个数值 11 1
*
*/
#include <stdio.h>
#include <stdlib.h>
unsigned Set(unsigned a, int p, int x)
{
//return a >> (p + 1 - x)&(~0 >> x); //|(0 >> x)
return a >> (p + 1 - x) | (0 >> x);
}
int main()
{
unsigned int a;
a = 251; //0000 0000 0000 0000 0000 0000 1111 1011
// 11 1
//0000 0000 0000 0000 0000 0000 0000 0000
//1111 1111 1111 1111 1111 1111 1111 1
printf("%d\n", Set(a, 5, 3));//31
system("pause");
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
代码4:
#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>
#define 小开关 1 // 0x1//0000 0000 0000 0000 0000 0000 0000 0001
#define 大开关 2 //0x2// 0000 0000 0000 0000 0000 0000 0000 0010
#define 密码开关 3 //0x3// 0000 0000 0000 0000 0000 0000 0000 0011
#define 主人开关 4 //0x4// 0000 0000 0000 0000 0000 0000 0000 0100
int main()
{
int 开关 = 0;
开关 = 开关 | 小开关;
开关 = 开关 | 大开关;
开关 = 开关 | 密码开关;
开关 = 开关 | 主人开关;
printf("%d\n", 开关); //7 //0000 0000 0000 0000 0000 0000 0000 0111
开关 = 开关 & ~小开关;
printf("%d\n", 开关); //6
MessageBoxA(NULL, "hello", "11111", 256|MB_ICONINFORMATION);
system("pause");
return 0;
}
end!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
学习需要努力,努力再努力---》写代码!!
视频地址http://www.bcwhy.com/thread-21592-1-1.html
0 0
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- 位运算
- OC之 NSMutableString, NSNumber, NSMutableNumber, NSArray
- 多校第六场 HDU 4927 JAVA大数类+模拟
- DButils工具类可以用来获取数据库连接向数据库插入更新删除对象2
- android studio最常用、最好用的快捷键
- 1003:Hangover
- 位运算
- OC语言-----NSString,NSMutableString基本用法
- RBP as a streaming server(一)
- 新的开始,为明天加油
- aspell
- 查普曼-科莫高洛夫方程Chapman–Kolmogorov equation
- tr
- 记录toast使用例子
- 部分Sql语句