反转一个值中的最后n位

  这是在《使用位运算显示二进制数》的基础上进一步扩展,实现反转一个值中最后n位,参数为n和要反转的值。

  ~可以一个字节中所有的位,而不是选定的少数位。为达到指定要求,需创建一个掩码,该掩码最后n位设为1,其余的位设为0。然后,对该掩码和一个值使用^运算就可以转置这个值得最后n位,同时保留该值的其他位不变。

  

 1 //使用位操作符来显示二进制并翻转该值的最后n位
 2 #include<stdio.h>
 3 char *itobs( int, char*);                //integer to binary string
 4 void show_bstr( const char*);        
 5 int invert_end(int, int);                 //关键算法
 6 main()
 7 {
 8     char bin_str[8 * sizeof(int) +1];
 9     int number;
10     int n;
11     while(scanf("%d", &number)==1)
12     {
13         itobs( number, bin_str);
14         printf("%d is \n", number);
15         show_bstr( bin_str);
16         putchar('\n');
17         puts("Enter an integer you want to invert:");
18         scanf("%d", &n);
19         number=invert_end(number, n);
20         printf("%Inverting the last %d bits gives\n", n);
21         show_bstr(itobs(number, bin_str));
22         putchar('\n');
23     }
24 }
25 char *itobs( int n, char *ps)
26 {
27     int i;
28     static int size = 8 * sizeof(int);
29     for( i=size-1; i>=0; i--, n>>=1)
30         ps[i]=(1&n)+'0';                   //01&n就是n的最后一位的值(1&n也行),该值为0或1。字符数组需要字符'0'或'1',加上'0'的ASCII编码可以完成转换
31     ps[size]='\0';
32     return ps;
33 }
34 //四位一组显示二进制字符串
35 void show_bstr(const char *str)
36 {
37     int i=0;
38     while(str[i])
39     {
40         putchar(str[i]);
41         if(++i%4==0  &&  str[i])
42             putchar('  ');
43     }
44 }
45 int invert_end(int num, int bits)
46 {
47     int mask = 0;
48     int bitval = 1;
49     while( bits-->0)
50     {
51         //mask|=bitval;    
52         //bitval<<=1;
53         mask|=1;mask<<=1;         //若用注释语句,则需注释本句
54     }
55     mask>>=1;                        //若用注释语句,则需注释本句
56     return num^mask;
57 }

 

转载于:https://www.cnblogs.com/anthozoan77/p/4070041.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398871.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构杂谈(三)

本文的所有代码均由C编写 如果你已经看完这篇杂谈,你可以前往上一篇杂谈→数据结构杂谈&#xff08;二&#xff09;_尘鱼好美的小屋-CSDN博客 3 单链表 文章目录3 单链表[toc]3.1 单链表的定义3.1.1 引入2.1.2 单链表和顺序表的优劣2.1.3 单链表的代码定义3.2 单链表的初始化3.…

Mac Book Pro不能识别移动硬盘

2019独角兽企业重金招聘Python工程师标准>>> 今天把一台Mac Book Pro重装了一下系统&#xff0c;然后想把移动硬盘上的资料考入电脑&#xff0c;发现插上移动硬盘电脑没有反映。马上搜索解决办法&#xff0c;众说纷纭。因为没重装之前是好的&#xff0c;所以判断为软…

java将ascii数组转成unicode字串

//转 byte[] bytes; String str new String(bytes, "GBK"); //回转 byte b; b (byte)str.charAt(0); 转载于:https://www.cnblogs.com/feilv/p/4070405.html

des加密解密JAVA与.NET互通实例

JAVA版本 import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec;public class Des {private byte[] desKey;//解密数据public static String d…

signature=ec663bb1ca3cfa2e278da44aa044d1c6,Fair Exchange of Signatures with Multiple Signers

摘要&#xff1a;Chen et al.~introduced a new notion of a concurrent signature scheme for a fair exchange of signatures with two parties. Chen et al. also proposed a concrete scheme and proved its security under the assumption of discrete logarithm problem.…

数据库杂谈(四)——关系演算和E-R数据模型

文章目录3 形式化关系查询语言3.2 关系演算和E-R数据模型3.2.1 概述3.2.2 元组关系演算3.2.2.1 概述3.2.2.2 形式化定义3.2.2.3 表达式的安全性3.2.3 域关系演算3.2.4 关于关系演算的习题3.2.5 对传统数据模型的评价3.2.6 E-R数据模型3.2.6.1 基本概念3.2.6.2 E-R图3.2.7 题型总…

jQuery获取浏览器URL链接的值

代码&#xff1a; 方法一&#xff1a; $.extend({getUrlVars: function () {var vars [], hash;var hashes window.location.href.slice(window.location.href.indexOf(?) 1).split(&);for (var i 0; i < hashes.length; i) {hash hashes[i].split();vars.push(ha…

小程序获取微信用户绑定的手机号

小程序API内提供getPhoneNumber借口来获取用户已经绑定到微信的手机号,但需要用户主动触发才能发起获取手机号接口&#xff0c;所以该功能不由 API 来调用; 基本流程如下: 使用方法 需要将 <button> 组件 open-type 的值设置为 getPhoneNumber&#xff0c;当用户点击并同…

华为正式发布鸿蒙多久可以用,华为正式发布鸿蒙OS,手机随时能用

8月9日下午&#xff0c;华为在松山湖召开了HDC2019开发者大会&#xff0c;而在此次大会上华为正式发布了传说中的华为鸿蒙系统&#xff0c;也就是Harmony OS。鸿蒙系统它是一个基于微内核的全新全长近分布式的操作系统&#xff0c;它不仅仅局限于某一个设备使用而是可以在其智慧…

WCF rest 的帮助页面和缓存机制

打开vs2010 在工具选项中选择扩展管理器——联机库 安装WCF REST Service Template 40(CS)模板 安装后新建wcf服务应用程序&#xff0c;删除默认建立的文件。 新建RestWcf4HelpPage.svc&#xff0c;代码如下 using System; using System.Collections.Generic; using System.Lin…

数据结构杂谈番外篇——时间复杂度计算

我们先给出推导的方法&#xff0c;然后下面一步一步来推导。 推导大O阶 用常数1取代运行时间中的所有加法常数在修改后的运行次数函数中&#xff0c;只保留最高阶项如果最高阶存在且不是1&#xff0c;则去除这个项相乘的常数所得结果即为大O阶 示例 int sum 0&#xff0c;…

DOM对象和JQuery对象的区别

jQuery对象和DOM对象使用说明&#xff0c;需要的朋友可以参考下。1.jQuery对象和DOM对象第一次学习jQuery,经常分辨不清哪些是jQuery对象&#xff0c;哪些是 DOM对象&#xff0c;因此需要重点了解jQuery对象和DOM对象以及它们之间的关系.DOM对象&#xff0c;即是我们用传统的方…

Eclipse 构建Maven项目

http://www.iteye.com/topic/1123225转载于:https://www.cnblogs.com/svennee/p/4079102.html

Winform可读取html语言,C# Winform 用WebBrowser实现 Html 编辑功能

介绍一款Winform中使用的html editor (Html编辑控件)&#xff0c;不过这不是一款新控件&#xff0c;它就是.Net平台开发人员所熟知的WebBrowser控件—_—.WebBrowser也可以实现Html编辑和预览功能。你只需要使用WebBrowser的设计模式去编辑&#xff0c;用第二个WebBrowser去预览…

Java学习笔记(二):String

String 在Java中String是作为引用对象存在的一种数据类型&#xff0c;用来保存字符串。 实例化和赋值 //直接声明 String s1 "Hello world!"; //通过构造函数创建, 提供了 11 种不同参数创建的方法 char[] c { h, e, l, l, o, .}; String s2 new String(c); Strin…

数据结构杂谈(一)

在你点进来这里的一瞬间&#xff0c;欢迎你找到了宝藏 这是一些关于数据结构和算法里最详细的阐述和学习心得&#xff0c;我十分乐意和你分享这些知识。 如果你已经看完这篇杂谈&#xff0c;可以前往下一篇→数据结构杂谈&#xff08;二&#xff09;_尘鱼好美的小屋-CSDN博客 1…

计算器排html页面,htmltest~计算器界面的实现

通过divcss和部分布局的作用&#xff0c;实现了&#xff0c;如下效果的计算器展示页面![C%]R$IGDK4J(%3LJXD3]SY.png&#xff0c;废话不多说&#xff0c;最主要的还是分享代码&#xff1a;html&#xff1a;Title.计算器-口 X编辑(E)查看(V)帮助(H)BackspaceCECMC789/sqrtMR456*…

git 常用方法

1.删除远程tag或者branchgit push origin --delete (tagName)/(brachName).例如&#xff1a;删除远程2.1branch&#xff1a;git push origin --delette 2.12.检出某次commit时的代码&#xff08;通过commit index检出&#xff09;git checkout commit的SHA1值例如&#xff1a;g…

win7 git 添加 ssh key

分两步走&#xff0c;借助git bash客户端&#xff1a;第一步&#xff1a;生成秘钥创建SSH key. 在用户主目录下&#xff0c; 看看有没有.ssh目录&#xff0c; 如果有&#xff0c; 再看看这个目录下有没有id_rsa 和 id_rsa.pub 这两个文件&#xff0c; 如果已经有了&#xff0c;…

解决三星手机EditText背景色的问题

问题描述android:background"#ffffff"其他手机手机背景都是白色&#xff0c;三星却是黑色的。怎么办 解决方案1写个主题测试下 解决方案2检查是三星的手机换背景色解决方案3你自己设置下edittext的背景就好了 解决方案4三星手机没这bug&#xff0c;你的固件不是正常的…