文档章节

c语言setbits,invert

好铁
 好铁
发布于 2014/09/10 16:14
字数 184
阅读 383
收藏 4
c

k&r习题2-6,setbits(x,p,n,y),将x中从第p位开始的n个二进制位设置为y中最右边n位的值,x的其余各位保持不变。

#include<stdio.h>

unsigned setbits(unsigned x, int p, int n,unsigned y)
{
    int mask;
    int pos=p+1-n;
    mask=~(~0<<n) << pos ;
    x=x & ~mask;
    y=y<<pos & mask;
    x=x|y;
    
    return x;
}

main()
{
    int x=012;
    int y=077;
    printf("%o\n",setbits(x,4,3,y));
}



~0的所有位都为1,通过对其移位补0,建立屏蔽码,在位操作中很常用

2-7,invert(x,p,n)

#include<stdio.h>
unsigned invert(unsigned x, int p, int n)
{
    return x^(~(~0<<n) << (p+1-n));
}

int main()
{
    unsigned a=034;
    printf("%o\n",invert(a,4,3));
}



与1按位异或,原位反转;与0异或,原位不变

© 著作权归作者所有

共有 人打赏支持
好铁
粉丝 35
博文 266
码字总数 78672
作品 0
朝阳
程序员
私信 提问
STM32学习笔记-点亮第一个led

首先感谢河北科技大学航模协会-能给我这样的学习机会-感谢那些带我们教我们的学长学姐们. 点亮第一个led灯之前要先大概了解一下单片机的工作方式并且有一定的编程基础,能看懂程序 单片机上有...

qq_18984151
2018/03/18
0
0
使用STM32固件库函数操作控制LED灯

直接使用寄存器地址来进行STM32开发要对每一个寄存器的地址通过查找芯片手册,对每一个寄存器的各个位的含义也要查清楚,然后决定对那个地址的哪些位进行怎样的设置。这种编程效率低,程序的...

fanxp66
2018/05/06
0
0
stm32 DMX512核心代码

while (1) { USARTCmd(USART2, DISABLE); GPIOTxNormalConfig(); GPIOResetBits(GPIOD,GPIOPin_5);//低 Delay(100us); //延时至少88us GPIOSetBits(GPIOD,GPIOPin_5); //拉高 USARTinitial()......

cicue
2013/09/05
0
0
LeetCode:Invert Binary Tree - 反转二叉树

1、题目名称 Invert Binary Tree(反转二叉树) 2、题目地址 https://leetcode.com/problems/invert-binary-tree/ 3、题目内容 英文: Invert a binary tree. to 中文:反转一颗二叉树。 4、...

北风其凉
2016/02/11
483
1
jQuery Utilities

$.each(object,function(name,value){}),用于遍历对象和数组。 $.each( [0,1,2], function(i, n){alert( "Item #" + i + ": " + n );});$.each( { name: "John", lang: "JS" }, function(i......

梵高
2011/08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

java数组的复制

java数组的复制,因为之前代码写着写着有点懵,所以总结一下记录一下。 主要有以下几种方式: clone System.arraycopy 和 Arrays.copyOfRange Arrays.copyOf for循环 最后需要注意的是基本类...

woshixin
18分钟前
0
0
面试题剖析,如何保证消息队列的高可用?

面试题 如何保证消息队列的高可用? 面试官心理分析 如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕...

李红欧巴
28分钟前
0
0
Java 启动线程并保持

1.等待输入 new BufferedReader(new InputStreamReader(System.in)).readLine();  2.同步锁 synchronized (TopologyServiceServer.class) { while (true) { ......

MrPei
37分钟前
0
0
关于C++ 容器的swap操作

一、swap操作交换两个相同类型的容器的内容,一般的容器(除array外),交换两个容器内容的操作会保证非常快,因为并没有交换元素本身,而只是交换了两个容器的内部数据结构。 拿vector做个例...

shzwork
41分钟前
1
0
程序员从宏观、微观角度浅析JVM虚拟机!

1.问题 1、JAVA文本文件如何被翻译成CLASS二进制文件? 2、如何理解CLASS文件的组成结构? 3、虚拟机如何加载使用类文件的生命周期? 4、虚拟机系列诊断工具如何使用? 5、虚拟机内存淘汰机制?...

我最喜欢三大框架
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部