当前位置: 首页 > news >正文

公司网站建设知乎腾讯企业网站建设

公司网站建设知乎,腾讯企业网站建设,网站建设维护及使用管理办法,网线制作的过程在C语言中#xff0c;移位操作符和位操作符是专门针对二进制的数字进行#xff0c;因此#xff0c;在描述移位操作符和位操作符之前#xff0c;我们先来了解十进制#xff0c;二进制#xff0c;八进制#xff0c;十六进制等的含义以及相互之间的转化。 一.进制以及相互… 在C语言中移位操作符和位操作符是专门针对二进制的数字进行因此在描述移位操作符和位操作符之前我们先来了解十进制二进制八进制十六进制等的含义以及相互之间的转化。 一.进制以及相互的转化 十进制二进制八进制十六进制等只是数值的不同表示形式十进制就是逢10进1位二进制就是逢2进1以此类推。 十进制每个位置上的值的范围是0-9二进制是0-1那么他们是如何进行转化的呢 1.二进制转化为十进制 首先来看我们是怎么读出十进制的数字的实际上例如123我们是运用了 这样的计算方法来获得答案的3对应的是10的0次方2×10的一次方以此类推最后求和即可 那么我们想把二进制数字转换为十进制的数字实际上也可以运用这样的计算方法只不过是改成成了✖2的多少次方。 例如我们求二进制数字1101转换为十进制的数字 如果我们想将一个八进制数字转换为十进制数字也是非常简单的 2.十进制转换为二进制 例如我们要将十进制数字125转换为二进制数字我们运用这样的方法 1.将十进制数字除以2保留整数部分将余数写在后面 2.一直进行1过程直到为0 3.余数按反向书写即可获得二进制数字 3.二进制转化为八十六进制 从右向左三个为一组无法组成一组就单独进行计算例如二进制数字1011101转换为八进制数字我们是这样做的 转化为十六进制的时候从右向左四个为一组即可 需要注意十六进制每个位置的范围是0~F包括0~9A~FA是10F是15 确定八进制的数字时候前面加0例如023就是八进制的数字十六进制前面加0x或0X十六进制的符号大小写与x的相同 5.八十六进制转化为二进制 只需要二进制转化的反向进行转化即可 二.原码反码补码 三者描绘的都是整数 由于int类型是4个字节32个bit每个bit位置可以存放1个二进制数字但是只有31位可以放大小最开头的一位放入的数字表示正负 原码整数的二进制表示其中我们知道数字分为正数和负数因此我们需要额外来表示正负如果数字为正数的时候原码的符号位位0负数则符号位为1 反码补码正数的反码和补码与原码一样 负数的反码负数的原码除了符号位所有位置取反如果原位置是1现在改为0 负数的补码负数的反码1 转化过程如图 事实上原码可以经过取反1变为补码补码也可以通过取反1变为原码 我们在运算的时候统一使用的都是补码来进行运算 三.移位操作符 移位操作符分为左移操作符    右移操作符 书写方法是 a 移位的数量例如 int b a 2; 1.左移操作符的移动规律 采用二进制数字全部左移空位补0的方法例如我们写出10的补码以 现在向左移位空位补0超出范围的去掉 我们会发现最后得到的结果是20因为向左移动代表着*2 负数也是如此不过记得移动的是补码移动后也是补码 2.右移操作符的移动规律 一般来说采用数字移动的规律就是全部右移然后空位补符号位的数字 四.位操作符 位操作符分为 1.按位与 两个数字的补码的二进制数字在某一个位置上都为1时才为1只要有0则位0例如 int a 4; //00000000000000000000000000000100 4补码 int b -7; //11111111111111111111111111111001 -7补码//00000000000000000000000000000000 我们发现此时没有相同的故ab 0 2.按位或|: 对应位置有1就是1都0才是0例如 int a 4; //00000000000000000000000000000100 4补码 int b -7; //11111111111111111111111111111001 -7补码//11111111111111111111111111111101 a|b的补码 //10000000000000000000000000000011 还原为原码//-3 一定要记得获得的是补码哦 3.按位异或^: 相同为0想异为1 int a 4; //00000000000000000000000000000100 4补码 int b -7; //11111111111111111111111111111001 -7补码//11111111111111111111111111111101//-3 4.按位取反~ 所有位置变为与原本不同的数 五.例题 1.不创建临时第三个变量实现整数交换 我们在实现整数交换时运用的是这种方法 int main() {int a 3;int b 5;int c 0;c a;a b;b c;printf(%d %d, a, b);return 0; }假设有两个瓶子分别装了醋和酱油现在让两个瓶子里面的东西反过来我们额外拿来了一个瓶子然后进行了操作。 但在这个题目中他让我们不创建临时变量也就是不能额外拿来一个瓶子实现整数的交换 我们可以采用这种方法 int main() {int a 3;int b 5;//当a与b特别大的时候超过最大值出现位数丢失溢出a a b; //a 8 b 5b a - b; //b 3 a 8a a - b; //a 5 a 3printf(%d %d, a, b);return 0; } 这样就可以交换a与b的值了但是如果a与b两个整数非常大的时候我们想加可能超过最大的范围因此这个方法有一定的局限性 我们在之前学习了^,它有如下的式子 a ^ a 0,因为两者完全相同同时 a ^ 0 a我们可以写出如下的代码 int main() {int a 3;int b 5;a a ^ b;b a ^ b; // a ^ b ^ b aa a ^ b; // a ^ b ^ a bprintf(%d %d, a, b);return 0; } 在这里我们将a ^ b 视为了一个整体进行的运算 2.计算一个数字的二进制数的1的数量 如果一个数字%2等于1此时它的二进制数字的最后一位为1我们可以写出如下的函数 int count(unsigned int m) {int num 0;if (m % 2) num;m / 2;return num; } 其中m要是unsigned int类型因为m传进去是一串二进制数如果是负数还需要单独判断此时我们将他们统一视为了正数进行的判断 当然我们也可以通过移位操作符来判断每一位上是否为1写出如下的函数 int count1(unsigned int m) {int count 0;int i 0;for (i 0; i 32; i) {if (((m i) 1) 1)count;}return count; } 使得m不断向右移动来计算 同时n n ^ (n-1)的方法可以更快的进行运算函数如下 // n n (n-1) 让n的二进制中最右边的1消失 // n 0时执行几次就是有几个1 有几个1统计几次 int count2(unsigned int m) {int count 0;while (m) {count;m m (m - 1);}return count; }感谢您的观看 如果您想要进行进一步的训练请移步 C语言进制习题-CSDN博客
http://www.zqtcl.cn/news/320234/

相关文章:

  • 兰州装修公司哪家好网站seo推广员招聘
  • 郑州网站推广 汉狮网络易企秀类似的软件
  • 做外单网站成都网页制作公司排名
  • 成都优化网站关键词搜索引擎有哪些平台
  • 福建百川建设有限公司网站郑州手机软件开发公司
  • 盐城企业做网站多少钱88建网站
  • 南京网站制作报价wordpress主题 yusi
  • 北京建网站已备案网站新增接入
  • 做搬家服务网站问卷调查的目的房产网签是什么意思
  • 江苏品牌网站设计美团后台管理系统登录
  • 没有备案的网站会怎么样深圳的互联网公司排名
  • 阿里云 建设网站北京百度竞价托管公司
  • 怎么样做长久的电影网站安卓手机应用市场
  • 网站建设账户搭建济南网络优化哪家专业
  • 宜兴城乡建设局网站wordpress调用logo
  • 让他人建设网站需要提供的材料女生读电子商务好就业吗
  • 北大荒建设集团网站国内开源代码网站
  • 高端企业网站要多少钱中企动力z云邮箱登录
  • 网站建设视频教程百度云那种自行提取卡密的网站怎么做
  • 网站外链建设与维护网站建设客户调研表
  • 海南省建设银行官方网站招聘营销的主要目的有哪些
  • flask 简易网站开发网站建设和空间
  • 怀化建设网站wordpress静态化插件
  • 网站上的中英文切换是怎么做的大连网站制作优选ls15227
  • 网站开发工作安排广告设计公司有哪些
  • 无人机公司网站建设用什么软件做网站最简单
  • 企业微信app下载安装电脑版淄博网站优化价格
  • 做一个电影网站需要多少钱在线代理服务器网站
  • 怎样制作微信网站办网络宽带多少钱
  • ios开发者账号有什么用嘉兴网站关键词优化