位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码

摘要:
位运算符的基本规则1,位运算符都是针对整数的二进制数字形式而进行的。但在实际的计算机的运行过程中,却常常不用原码,所以就有反码,补码的问题。在此基础上上,规则:一个二进制数字的第一个位是符号位,0表示正数,1表示负数。负数的反码,就是将原码的非符号部分,每一位取反。负数的反码,符号位不变,其余每一位取反之后,整体加1举例:7:00000111-7:11111001

位运算符的基本规则
1,位运算符都是针对整数的二进制数字形式而进行的。
2,按位与运算基本规则(规则表):
1 & 1 ==> 1
1 & 0 ==> 0
0 & 1 ==> 0
0 & 0 ==> 0;
3, 按位或运算基本规则
1 | 1 ==> 1;
1 | 0 ==> 1;
0 | 1 ==> 1
0 | 0 ==> 0
4,按位非运算:
~ 1 ==> 0
~ 0 ==> 1
5,按位异或运算:
1 ^ 1 ==> 0
0 ^ 0 ==> 0
1 ^ 0 ==> 1
0 ^ 1 ==> 1
规律:相同就是0,不同就是1

按位与运算:&
形式:A & B;//A和B都是数字,其实是常规的10进制数字,但内部会按二进制进行计算
含义:将A和B的二进制形式的每一个位上的二进制数字进行按位与(&)运算之后的结果。
说明:一个数字的二进制形式通常是32位的0和1的组合,也可能是64位,但未了说明问题,我们通常只用8位。
举例:
$r1 = 9 & 13;//9的二进制是“1001”,13的二进制是“1101”
结果是“00001001”,即9

按位或运算:
形式:A | B;//A和B都是数字,其实是常规的10进制数字,但内部会按二进制进行计算
含义:将A和B的二进制形式的每一个位上的二进制数字进行按位或(|)运算之后的结果。
举例:
$r1 = 18 | 10;//18的二进制是“10010”,23的二进制是“1010”
结果是“00011010”,即26

按位左移运算:<<
形式: A << n;//A是一个要被移动的数字,同样可以是普通数字,但按二进制去运算,n是一个指定要移动的位数
含义:将数字A的二进制形式的每一个位上的数字往左边移动指定的位数n,则最左边的n位移出去了就不管了,最右边空出来的n位,补0就可以。
举例:
$r1 = 9 << 2;//9的二进制形式为:1001
结果是:32 + 4 = 36

按位右移运算:>>
形式: A >> n;//A是一个要被移动的数字,同样可以是普通数字,但按二进制去运算,n是一个指定要移动的位数
含义:将数字A的二进制形式的每一个位上的数字往右边移动指定的位数n,则最右边的n位移出去了就不管了,最左边空出来的n位,补0就可以(对正数,实际是补符号位)。
举例:
$r1 = 9 >> 2;//9的二进制形式为:1001
结果就是:2

按位非:
将一个数字的二进制形的每一个二进制数字取反所得到的结果

按位异或:
将2个整数的二进制形式的每一个对应数字进行异或运算之后的结果。

原码,反码,补码介绍
原码:就是“原来的二进制码”,其实就是我们可以理解的按10进制转换为二进制之后得到的一个字符码。
原码在数学上都是可以理解的。
但在实际的计算机的运行过程中,却常常不用原码,所以就有反码,补码的问题。
在此基础上上,规则:一个二进制数字的第一个位是符号位,0表示正数,1表示负数。
举例(都以8位为例):
7: 00000111
-7: 10000111
反码:
正数的反码是其本身。
负数的反码,就是将原码的非符号部分,每一位取反。
举例:
7: 00000111
-7: 11111000

补码:
正数的补码是其本身。
负数的反码,符号位不变,其余每一位取反之后,整体加1(即反码加1)
举例:
7: 00000111
-7: 11111001

免责声明:文章转载自《位运算符、按位与、按位或、按位非、左移、右移、原码、反码、补码》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇win7 64 &amp;amp;vs2010 与 opengl配置分析函数和开窗函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python基础之字符编码

一 了解字符编码的知识储备 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容也都是存放与内存中的,断电后数据丢失 因而需要保存到硬盘上,点击保存按钮,就从内存中把数据刷到了硬盘上。 在这一点上,我们编写一个py文件(没有执行),跟编写其他文件没有任何区别,...

字符编码简单总结

字符编码(英语:Character encoding)、字集码是把字符集中的字符编码为指定集合中某一对象(例如:比特模式、自然数串行、8位组或者电脉冲),以便文本在计算机中存储和通过通信网络的传递。常见的例子包括将拉丁字母表编码成摩斯电码和ASCII。其中,ASCII将字母、数字和其它符号编号,并用7比特的二进制来表示这个整数。通常会额外使用一个扩充的比特...

Numpy---4.数组的存储和加载

一、二进制 1.numpy.save() numpy.save(file, arr, allow_pickle=True, fix_imports=True) 功能:将数组以二进制的形式存储到文件中 参数: file:文件名或者文件对象。如果是个文件名,则会自动添加后缀.npy如果没有该后缀的话 arr:被存储的数组 allow_pickle:一个...

MariaDB日志文件、备份与恢复

1. 数据库的6种日志        数据库有6种日志,分别是:查询日志、慢查询日志、错误日志、二进制日志、中继日志以及事务日志。 1> 查询日志   查询日志记录每一条sql语句,建议不开启,因为如果访问量较大,会占用相当大的资源,影响性能。 查询日志的开启:        编辑配置文件:/etc/my.cnf.d/server.cnf vim /...

深度理解 原码, 反码, 补码

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机...

python模块介绍- binascii:二进制和ASCII互转以及其他进制转换

20.1 binascii:二进制和ASCII互转作用:二进制和ASCII互相转换。 Python版本:1.5及以后版本 binascii模块包含很多在二进制和ASCII编码的二进制表示转换的方法。通常情况不会直接使用这些功能,而是使用像UU,base64编码,或BinHex封装模块。 binascii模块包含更高级别的模块使用的,用C语言编写的低级高效功...