位运算运算律,位运算骚操作

  位运算运算律,位运算骚操作

  位操作和基位操作符1。处理整数值时,可以直接对组成整数值的位进行操作。这意味着整数中的每个位都可以使用屏蔽技术获得。

  2.(与)、(或)、(异或)、~(非/非)。

  3.AND运算符将二进制位向右或向左移动。

  4.运算符将用0填充高位;高位用运算符符号位填充,没有运算符。

  5.对于int类型,1 ^ 35和1 ^ 3是一样的,而左边的操作数是long类型,需要操作右边的数字模型64。

  6.和均为1,结果为1;或者:一个是1,结果是1;XOR:当两者不同时,结果为1。

  提示1。判断奇偶数:x 1=1,则x为奇数,x 1=0,则x为偶数。

  2.获取二进制位是1还是0: x一个奇数,然后将其向右移动相应的位数。

  3.交换两个整数变量的值。

  4.不用判断语句求整数的绝对值。

  异或:可以理解为无进位加法:1 1=0,0 0=0,1 0=1。

  1.交换律可以交换运算因子的位置,结果不变。

  2.结合律(即(a b) c==a (b c))

  3.对于任意数x,有x个x=0,x ^ 0=x,不同于自己或0,不同于0或为自己。

  4.自反性a b b=a 0=a,同因子连续异或运算,最后的结果是你自己。

  问题1:找出唯一的成对数字1-1000。这1000个数字放在一个有1001个元素的数组中,只有唯一的元素值是重复的,其他的只出现一次。每个数组元素只能被访问一次。设计一个算法找出来。没有辅助存储空间可以设计算法吗?

  连续异或的思想消除了重复。

  代码#包含iostream

  使用命名空间std

  int main()

  {

  int x=0,test[10]={1,2,3,4,5,6,7,8,9,7 };

  for(int I=1;I=9;x=x^i;

  for(int j=0;j 10j)x=x^test[j];

  cout x endl

  返回0;

  }问题二:求单号。除了数组中的某个数字,其他数字都出现两次。请写一个程序找出这个只出现一次的数字。

  连续异或的思想消除了重复。

  代码#包含iostream

  使用命名空间std

  int main()

  {

  int x=0,test[11]={1,1,3,3,5,5,7,7,9,9,11 };

  for(int j=0;j 11j)x=x^test[j];

  cout x endl

  返回0;

  }问题3:二进制中1的个数。请实现一个函数,输入一个整数,输出这个数的二进制表示的1的个数。

  例:9的二进制表示是1001,两位数是1。

  1.整数x和1,然后将1向左移动32次;

  2.整数X和1,然后循环右移32次;

  3.x (x-1)可以消去最右边的1,直到x=0。

  代码#包含iostream

  使用命名空间std

  int main()

  {

  int x,n=1,ans=0;

  cin十世;

  for(int I=0;i 32我)

  if(x(n I))ans;

  cout ans endl

  返回0;

  } #包含iostream

  使用命名空间std

  int main()

  {

  int x,ans=0;

  cin十世;

  for(int I=0;i 32我)

  if((x I)1)ans;

  cout ans endl

  返回0;

  } #包含iostream

  使用命名空间std

  int main()

  {

  int x,ans=0;

  cin十世;

  while (x)

  {

  x=x(x-1);

  ans

  }

  cout ans endl

  返回0;

  }问题4:是2的整数次方吗?用一个语句判断一个整数是否是2的整数次方。

  2的整数次幂意味着X中只有一个1,x (x-1)可以消去最右边的1。

  代码#包含iostream

  使用命名空间std

  int main()

  {

  int x;

  cin十世;

  if((x(x-1))==0)cout yes endl;

  else cout no endl

  返回0;

  }问题5:将一个整数的奇偶校验位交换成一个整数,交换其二进制形式的奇偶校验位的个数。

  Idea一个数(0101)8得到它所有的奇数,(1010)8得到它所有的偶数。然后分别左右移动后,再异或一次,奇、偶数位互换。

  代码#包含iostream

  使用命名空间std

  int main()

  {

  int x;

  cin十世;

  int ji=0x55555555,ou=0xaaaaaaaa

  int a=x ji,b=x ou,c=(a 1)^(b 1);

  cout c endl

  返回0;

  }问题6:0到1之间的浮点实数的二进制表示。给定一个0到1之间的实数(例如0.625),类型为double,打印其二进制表示(0.101,因为小数点后的二进制表示0.5,0.25,0.123…)。

  如果数字不能在32位内准确地用二进制表示,则打印“错误”

  浮点数转换成二进制数的思路是乘2,四舍五入。

  代码#包含iostream

  #包括cstring

  使用命名空间std

  int main()

  {

  字符串s;

  int len=0;

  双x;

  cin十世;

  while(x ^ 0)

  {

  double num=x * 2;

  如果(数字=1.0)

  {

  s= 1

  x=num-1;

  }

  其他

  {

  s=“0”;

  x=num

  }

  len

  如果(镜头32)

  {

  cout ERROR endl

  返回0;

  }

  }

  cout 0 s endl

  返回0;

  }问题7:K次1次的组中只有一个数出现一次,其他数都出现K次。请输出只出现一次的数字。

  思路:K个相同的K进制数相加,不进位,结果是0。

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: