(来自高程我的笔记)关于位操作符的补码与反码与按位非操作符
来源:互联网 发布:mac安装flash插件 编辑:程序博客网 时间:2024/06/08 07:12
位操作符用于最基本的层次上,即按内存中表示的数值的位来操作数值。位操作符不能直接操作64位的值,而是先将64位的值转换为32位的整数,然后执行操作,最后转为64位。对于有符号的整数,32位中的前31位用于表示整数的值,第三十二位表示数值的符号,0表示正值,1表示负值。这个表示符号的位叫做符号位。
负数的同样是以二进制码存储,但使用的格式是二进制补码。计算一个熟知的二进制补码,需要经过三个步骤
1)求这个数值绝对值得二进制码(例如-18的二进制补码,先求18的二进制码)
求-18的二进制补码,首先求得18的二进制码,即
0000 0000 0000 0000 0000 0000 0001 0010
2)求二进制的反码,即将0,1互换;
1111 1111 1111 1111 1111 1111 1110 1101
3)最后,二进制反码加一;
1111 1111 1111 1111 1111 1111 1110 1101
1(进位)
1111 1111 1111 1111 1111 1111 1110 1110
在对NaN和Infinify值应用位操作符时,会被当做0处理。
按位非(~)
var num = 25;0000 0000 0000 0000 0000 0000 0001 1001
var num2 = ~num;
1111 1111 1111 1111 1111 1111 1110 0110(加一)
1111 1111 1111 11111111 1111 1110 0111(取反)
0000 0000 0000 0000 0000 0000 0001 1000(转换为10进制)
( 2的三次方加2的四次方 = 26 ;26加负号 )
alert(num2);//-26
这里对25执行按位非操作,得到了-26.验证了按位非操作的本质,操作数的负值减一。
因此以下代码也能得到相同结果。
var num = 25;
var num2 = -num -1;
alert(num2);//“-26”
按位与(&)
按位与操作在本质上来说就是将两个数值的每一位对齐,然后根据表中规则,执行and操作
第一位第二位结果111100010000
var result = 25 & 3;
alert(result);//1
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
and=0000 0000 0000 0000 0000 0000 0000 0001
2的0次方 = 1
按位或(|)
第一位第二位结果111101011000
var result = 25 | 3;
alert(result);//27
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
or =0000 0000 0000 0000 0000 0000 0001 1011
=27
按位异或(^)
第一位第二位结果110101011000
var result = 25 ^ 3;
alert(result);//26
25 = 0000 0000 0000 0000 0000 0000 0001 1001
3 = 0000 0000 0000 0000 0000 0000 0000 0011
xor=0000 0000 0000 0000 0000 0000 0001 1010
=26
- (来自高程我的笔记)关于位操作符的补码与反码与按位非操作符
- 原码反码补码以及移位按位与或异或等位操作的实例
- 原码、反码、补码,以及负数的位操作
- C 位运算符操作的二进制码 (补码)
- 5、位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码
- java的原码,反码与补码
- 计算机的原码,反码与补码
- 原码,补码,反码与位运算
- 原码, 反码, 补码 详解以及负数的按位与运算
- 记录 位运算 的使用心得 与原码补码 反码
- 位运算: 与”&、“非”~、“或||”、“异或”^ ;原码 反码 补码的相互转化
- 二进制:原码、反码、补码转换规则;取补操作(-)和取反操作的区别
- 原码、反码与补码——谈谈我的理解
- 关于原码、反码与补码
- 计算机中的位操作、补码、反码、原码
- c++位运算符 | & ^ ~ && ||,补码,反码
- c++位运算符 | & ^ ~ && ||,补码,反码
- 原码,反码,补码的速解与详解
- 移动端点击输入框 input被弹出键盘挡住
- 微信分享,qq分享没反应
- php在数组中查找key或value是否存在
- Spring AOP 3.x 和 2.x
- linux中解压文件
- (来自高程我的笔记)关于位操作符的补码与反码与按位非操作符
- thinkphp+ajaxfileupload 异步上传图片
- Bitmap基础
- 2012蓝桥杯国赛第三题 输入汉字显示大写首字母
- 简单的form表单验证
- window.location下的属性说明
- xtrabackup备份与恢复
- 非类型模板参数
- 进程间通信系列(7)匿名管道和命名管道异同