`

一个字节中被置 1 的位的个数

    博客分类:
  • c
 
阅读更多


第一种unsigned int TestAsOne0(char log)
{
int i;
unsigned int num=0, val;
for(i=0; i<8; i++)
{
val = log >> i; //移位
val &= 0x01; //与1相与
if(val)
num++;
}
return num;
}


第二种unsigned int TestAsOne1(char log)
{
int i;
unsigned int num=0, val;
for(i=0; i<8; i++)
{
val = (~log) >> i; //反码?
val &= 0x00; //与0相与
if(!val)
num++;
}
return num;

分享到:
评论

相关推荐

    C++经典练习例题210例

    在C++编程中,计算一个字节中被置1的位数是一个常见的问题,这个问题涉及到位操作和计数技巧。通常,这样的问题可以用于考察程序员对位运算的理解以及优化算法的能力。下面,我们将深入探讨这个问题及其不同的解决...

    S7-200SMART中位状态的变址读写以及统计字节中为1或0的数量.rar

    以上就是关于S7-200SMART PLC中位状态的变址读取和写入,以及如何统计N个字节中1或0数量的详细解析。理解并熟练掌握这些操作对于进行有效的PLC程序设计至关重要,可以极大地提高自动化系统的效率和可靠性。在实际...

    汇编语言 20个练习题目 代码加实验报告

    5.13 在STRING到STRING+99单元中存放着一个字符串,试编制一程序测试该字符串中是否存在数字,如有,则把CL的第五位置1,否则置0. 5.14 在首地址为TABLE的数组中按递增次序存放着100H个16位补码数,试编写一个程序把...

    C语言之C语言底层操作

    这个结构体定义了关于一个工人的信息,其中有两个位结构成员,每个位结构成员只有一位,因此只占一个字节但保存了两个信息,该字节中第一位表示工人的状态,第二位表示工资是否已发放。 三、字节对齐 字节对齐是指...

    C底层开发

    答案与分析:&gt;&gt;和是指将变量中的每一位向右或向左移动,通常形式为:右移:变量名&gt;&gt;移位的位数 左移:变量名移位的位数 经过移位后,一端的位被"挤掉",而另一端空出的位以 0 填补,在 C 语言中的移位不是循环移动的...

    比较详细的c++ 笔试题

    最后一个问题是如何计算一个字节中被置1的位的个数。这可以通过两种方法实现: 1. **循环右移法**:通过将字节右移一位并与1相与,然后检查结果是否为真,来逐位检查是否有1。 2. **位清零法**:利用一个数字与其减1...

    微机原理课后习题集解答.doc

    3. **TF(Trap Flag)**:陷阱标志,当TF为1时,CPU处于单步调试模式,每次执行一条指令后会产生一个单步中断。 4. **AF(Auxiliary Carry Flag)**:辅助进位标志,主要用于半字节(4位)运算的进位或借位,如在BCH...

    关于单片机串口通信的奇偶校验.docx

    当接收到一个字节时,我们需要检查RB8是否与数据位中的1个数匹配以确定校验是否通过。以下是C语言实现接收端的偶校验: ```c void receive_even parity() { while (!RI); // 等待接收中断 RI = 0; // 清除接收...

    reg51头文件定义的扩展数据类型1

    这是C语言中的预处理器指令,用于防止同一个头文件被多次包含,从而避免重复定义导致的编译错误。 #### 3. 字节寄存器定义 这部分定义了80C51/80C31 MCU中的特殊功能寄存器(SFR),它们通常位于RAM的高128字节...

    TM1668中文手册完整版

    15. TM1668的键扫描数据寄存器用于存储按键的状态信息,当按键被按下时,相应的字节中的对应位会被置为1。 综上所述,TM1668的中文手册为使用该芯片提供了详尽的指导,涵盖了从硬件连接到指令编程、数据操作的各个...

    2022年单片机指令系统3.ppt

    此外,如果结果中1的个数为奇数,奇偶标志P会被置1,否则置0。 接下来是加1指令`INC`,它可以对A、Rn、直接寻址的内存、间接寻址的内存或DPTR进行操作,增加1。其中,`INC A`和`INC ACC`会影响P标志位,而其他形式...

    单片机原理第2章习题解答.doc

    在本题中,采用 6MHz 的晶振频率,由于 AT89S52 的机器周期等于 12 个时钟振荡周期,所以一个机器周期的时间为 \(\frac{1}{6MHz} \times 12 = 2\mu s\)。 2. **机器周期与时钟周期的关系**: - **题目描述**:AT...

    汇编 第四章 指令系统层

    用于检查运算结果的最低位字节中1的个数是否为偶数。如果是偶数,则PF被置为1;否则置为0。这主要用于检测数据传输过程中的错误。 3. **AF (Auxiliary Carry Flag)**:辅助进位标志。在进行算术运算时,如果低字节...

    微机原理与应用:第十一讲 数据处理类指令(上).ppt

    这是因为在加法运算中,最高位产生了进位,半进位和溢出标志也被设置,而ACC中的1的个数为奇数,因此奇偶标志位P为1。 另一条指令ADD A, 40H执行前,(A)=68H,(40H)=0D9H。执行后,(A)=41H,(Cy)=1,(AC)...

    pc机与单片机串口通信源代码.pdf

    当RI(Receive Interrupt Flag)标志位被置1时,表示接收缓冲区有新的数据,程序读取SBUF(Serial Buffer)获取数据。如果接收到的数据是起始标志'S',则开始接收后续数据,否则重新等待起始位。如果已经接收到10位...

    最终版本1

    程序状态字PSW(Program Status Word)包含了程序执行的状态信息,如P标志位用于奇偶校验,当累加器A中的1的个数为奇数时,P位被置位,反之则清零。此外,还有其他标志位,但这里没有详细展开。 中断系统在单片机中...

    微机原理与接口技术(第二版)课后习题答案完整版 (3).pdf

    2. PF(奇偶标志位):当操作结果的二进制位中1的个数为偶数时,PF置1,奇数时清0,用于判断数据的奇偶性。3. AF(辅助进位标志位):在半字节或低4位运算中产生进位或借位时,AF置1,否则清0,主要用于加减法运算中...

    EEPROM用于计时器延长使用寿命的几种算法

    当计数达到4小时时,240字节全部被置为8’h00,此时“时针”计数器加1,表示过了4个小时,并将此值写入31页的前2字节。 **存储格式**:240Byte + 2Byte (4hour_counter)。 **使用寿命计算**:使用寿命为\(2 \times...

    单片机原理及接口技术第二版李全利主编课后答案

    也称为程序状态字寄存器,是80C51单片机中的一个重要组成部分,用于存放各种状态标志,包括进位标志CY、辅助进位标志AC、用户标志位F0和F1、溢出标志OV、奇偶标志P以及工作寄存器组选择位RS0和RS1。下面详细介绍这些...

Global site tag (gtag.js) - Google Analytics