位运算 , 补码 ----在开发中比较少用

如果要想进行位操作,则需要先将十进制的数据变为二进制数据(除2,求余)。

例如:int x=-3;  //以补码的形式存在,补码=反码+1

左移和右移

<<:左移操作是将运算数的二进制码整体左移指定位数,左移后的空位使用“0”来填充。

>>:右移操作是将运算数的二进制码整体右移,右移后空出来的位置以符号位来填充。如果是正数使用“0”填充,负数用“1”填充

左移操作

int x=3;

x<<2;

右移操作

int x=3,y=-3;

x>>2;

y>>2;

无符号右移

int x=3,y=-3;

x>>>2;

y>>>2;

位操作实际上在基本的开发中很少使用,用于一些底层的加密。

时间: 2024-08-02 22:38:19

位运算 , 补码 ----在开发中比较少用的相关文章

【位运算】求二进制数中1的个数

1 import java.util.Scanner; 2 3 /** 4 * 功能:位运算,求二进制数中1的个数 5 * 思路:通过每次右移一位,并与1进行与运算,判断该位是否是1,最后统计个数. 6 */ 7 public class Main4 { 8 9 public int count(int num) { 10 11 if (num <= 0) { 12 return 0; 13 } 14 15 int count = 0; 16 17 while (num > 0) { 18 i

2015/6/10 按位运算 补码求法

1.按位运算 "与"运算:参加运算的两个数据,按二进制位进行“与”运算. 运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1;  即:两位同时为“1”,结果才为“1”,否则为0 “或”运算:参加运算的两个对象,按二进制位进行“或”运算.     运算规则:0|0=0:   0|1=1:   1|0=1:    1|1=1:  即 :参加运算的两个对象只要有一个为1,其值为1. “异或”运算:参加运算的两个数据,按二进制位进行

C#位运算示例和enum中的位运算

今天在项目中遇到按位或组合权限串的问题: 首先每一个权限数都是2的N次方数 如:k1=2 ; //添加 k2=4 ; //删除 k3=8; //修改 ... 如此定义功能权限数,当需要组合权限时,就需要对各个所拥有的权限数按位或了. 如: purview = k2|k3; // 赋给添加和删除权限 当需要判断在权限串中是否拥有某一权限时,就需要进行按位与. 如: if((purview & k1) >0)//判断此权限串是否拥有添加权限,结果>0 则进入if语句代码块中 { ....

位运算解决“一个数组中,只有一个数字出现n次,其他数字出现k次”问题

转自:https://blog.csdn.net/monster_girl/article/details/52928864 在学习完位操作后,经常会遇到一类关于查找缺失整数的问题. 第一类是给你一个数组,告诉你这些数字的范围是什么,然后让你查找这个缺失的数字(例如无序数组的范围是从1到10,不重复的9个数). 这类问题的解决方法比较多样,第一种,因为给定了范围可以通过计算数字总和值,然后分别减去这些数字,剩下的则是缺失的数字.第二种,对这个数组进行排序,遍历整个数组,然后判断相邻的元素是否连续

第十六天:C语言进阶之位运算及内嵌汇编

位运算在驱动开发中是经常遇到的,尤其是置0和置1.既要指定的位数发生变化,又不能改变其它位的值.还要高效率的编写代码.这时候技巧就很重要了.在位运算中有几个符号: |  按位或 & 按位与  ^ 异或  -按位非 1 #include<stdio.h> 2 3 int main() 4 { 5 int a = 0x1101; 6 int b = 0x1011; 7 int c = 9; 8 printf("a | b is %x\n",a | b); 9 print

[C++基础]位运算 游戏开发中的应用

位运算的定义:通俗点说,位运算就是对一个整数在计算机中二进制进行操作. 任何一个整数都可以用二进度的方式来表示的,不同类型的整数它的位数的长度也不一样,INT8或者char是由8个2进度 位表示,INT16或者short是由16个2进度位表示,INT32是由32位状态位表示. 位运算在游戏中的应用 往往,在游戏开发中做位运算的时候,我关注的主要是某一位的值是0,还是1,而并不是去关注这个整数的值是多少. 比如:00100010,这个8位的整数从右到左,它的第一位为0,第二位为1,第三位为0,第六

位运算 游戏开发中的应用

位运算的定义: 通俗点说,位运算就是对一个整数在计算机中二进制进行操作. 位运算的原理是很简单的,百度百科里就能找到它的一些基本的用法,以及相关的运算符号. 大部分刚刚进入到游戏行业里的程序员,你问他什么叫位运算,他都懂,但实际中往往却不记得去使用它. 任何一个整数都可以用二进度的方式来表示的,不同类型的整数它的位数的长度也不一样,INT8或者char是由8个2进度位表示,INT16或者short是由16个2进度位表示,INT32是由32位状态位表示. 位运算在游戏中的应用 往往,在游戏开发中做

js中位运算的运用

原文:js中位运算的运用 我们可能很少在编程中用位运算,如果没深入学习,可能也很难理解.平时的数值运算,其实是要先转换成二进制再进行运算的,而位运算就是直接进行二进制运算,所以位运算的执行效率肯定是更高的.下面通过一些实例来加深对位运算的理解. 按位与(&) &&运算符我们都知道,只有两个都为真,结果才为真.&道理是一样的,只有两个数的值为1时,才返回1.例如1和3的按位与操作: 0001 & 0011 --------- 0001 只有对应的数为1时,结果才为1,

结构体、共用体和位运算

1.C语言结构体的定义和使用 在实际问题中,一组数据往往具有不同的数据类型:例如在学生信息登记表中,姓名为字符型,学号为整型或字符型,年龄为整型,性别为字符型,成绩为整型或实型.因为数据类型不同,显然不能用一个数组来存放. 在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据.定义结构体的一般形式为: struct 结构体名{ 成员列表 }; 每个成员都是结构体的组成部分,有名字,也有数据类型,形式为: 类型说明符 成员名; 例如用结构体来表示学生信息: struct stu{ c