求整数的位模式中包含几个1

逻辑运算、移位运算、算术运算,整数和浮点数的加减法 XOR运算的一个应用是便指定的位反转,掩码中的1位对第一个输入中的相应的位进行反转,而掩码巾的0位使第一个输入中相应的位保持不变。如果新的符号位与原先的相同,那么运算成功,否则发生上溢或下溢,结果是非法的。以浮点数存储的实数的加法和减法被简化为小数点对齐后以符号加绝对值格式(符号和尾数的组合)存储的两整数的加法和减法。掩码中的1位对第一个输入中的相应的位进置位, 而掩码中的0位使第一个输入中相应的位保持不变。整数以二进制补码表示法存储,正数的补码就是它的原码,负数的补码等于原码的反码加1。 阅读详情
求整数的位模式中包含几个1。
//
//
#include <iostream>
#include <assert.h>
#include <algorithm>
#include <hash_set>
#include <vector>
#include <string>
#include <assert.h>
#include <time.h>
using namespace std;
// O(n)
int bitCount(int x)
{

	int sum=0;
	while (x)
	{
		x &= (x-1);
		sum++;
	}
	return sum;
}

// O(logn)
int bitCount2(int x)
{
	x=((x&0xAAAAAAAA)>>1)+(x&0x55555555);
	x=((x&0xCCCCCCCC)>>2)+(x&0x33333333);
	x=((x&0xF0F0F0F0)>>4)+(x&0x0F0F0F0F);
	x=((x&0xFF00FF00)>>8)+(x&0x00FF00FF);
	return x;

}
int main()
{
	int i,x;
	time_t ib,ie;
	int N=1000;

	// bitCount
	ib=clock();
	while (N--)
	{
		for (i=0; i<10000; i++)
		{
			x=bitCount(i);
		}
	}
	ie=clock();
	cout<<"bitCount: "<<ie-ib<<"  ms"<<endl;

	// bitCount2
	N=1000;
	ib=clock();
	while (N--)
	{
		for (i=0; i<10000; i++)
		{
			x=bitCount2(i);
		}
	}
	ie=clock();
	cout<<"bitCount: "<<ie-ib<<"  ms"<<endl;

	// check
	for (i=0; i<50; i++)
	{
		cout<<i<<" bitCount(i) = "<<bitCount(i)<<" bitCount2(i) = "<<bitCount2(i)<<endl;
	}
	
	return 0;
}


深入探讨C++中的浮点数与整数转换 本文探讨了C++中浮点数与整数转换的常见问题。通过代码示例说明,64位浮点数(double)和64位整数(uint64_t)虽然大小相同,但内存表示方式完全不同:浮点数遵循IEEE 754标准,而整数使用二进制补码。直接转换会导致精度损失和位模式改变。正确的做法是使用双向memcpy保持位模式的完整性,这在处理传感器数据或网络数据包等需要精确二进制表示的场景中尤为重要。通过分析错误示例和正确实现,强调了理解数据类型差异及正确处理转换的重要性。 阅读详情

相关推荐

红外:非均匀性校正01_基本原理与基本方法

非均匀校正(nonuniformity correction,NUC) 基本原理 这里要表达的意思就是:图中每一条直线对应一个像素点的,亮度/辐照度的情况。由于硬件的关系,每一个像素点的线性响应很不一样,所以需要通过矩阵来校正。 校正原理: 一点校正 两点校正 其他原理介绍: 参考链接: 基于多项式拟合的红外焦平面非均匀校正 课件:光电成像——非均匀性校正 红外图像非均匀性校正相关汇总 红外非均匀性校正算法总结 红外图像非均匀矫正——一点矫正 ...

dlvector的博客 2万+

输入一个整数,求该整数的二进制表示中有多少个1

求一个整数的二进制中1的个数。      题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。       分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。       一个很基本的想法是:我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到

zhaojian3513的专栏 4338

从T型结到Wilkinson:5分钟搞懂功分器选型指南(附最新射频测试数据对比)

本文通过对比T型结、电阻型和Wilkinson三种功分器的核心原理与实测数据,提供了清晰的射频功分器选型指南。文章结合最新的2.4GHz ISM频段测试数据,分析了插入损耗、回波损耗和端口隔离度等关键指标,并针对窄带物联网、射频测试及合成系统等不同应用场景,给出了具体的选型建议和实战提醒,帮助工程师根据系统需求做出最优决策。

bush的博客 305

Hecate多模式解析教程:文本、整数、浮点数与位模式实战

Hecate是一款功能强大的终端十六进制编辑器,它以独特的方式展示和解析二进制数据,让开发者和逆向工程师能够轻松查看和编辑文件的底层字节。本文将详细介绍Hecate的多种数据解析模式,包括文本、整数、浮点数和位模式,帮助你快速掌握这款工具的核心功能。 ## 认识Hecate:终端中的十六进制编辑利器 Hecate与传统的十六进制编辑器不同,它将字节的解释值直接显示在十六进制表示的下方,而不是将

gitblog_01052的博客 429

RK3588与银河麒麟V10 SP1 2403深度适配:国产化硬件与操作系统的完美融合

本文深入探讨了RK3588处理器与银河麒麟V10 SP1 2403操作系统的深度适配,展示了国产化硬件与操作系统的完美融合。通过性能验证和实际应用测试,证明了这套组合在多媒体处理、AI推理和日常办公中的卓越表现,实现了完全自主可控的计算平台。

weixin_29194255的博客 249

从零开始:在CentOS服务器上部署R Shiny应用的完整指南

本文提供了一份在CentOS服务器上部署R Shiny应用的完整实战指南。内容涵盖从创建专用用户、安装R语言环境、配置Shiny Server,到最终部署应用并配置防火墙的全过程。针对部署过程中常见的权限、端口及依赖问题,给出了详细的解决方案,旨在帮助数据分析师和开发者将本地Shiny应用稳定、安全地发布至生产环境。

weixin_29079743的博客 135

2.2 整数表示(以及转换)

2.2 整数表示(以及转换) 本节要使用到的公式/函数术语(引用原文图片) 图中的w表式二进制的位数 一.无符号整数的编码 这里引用原文中的图片 可见,无符号整数的十进制表示就是将所有的二进制位乘以权值然后求和转换为十进制。 无符号数的范围:0~2w-1。(最小值,全0;最大值,全1) 举个例子:为了简单,使用四位二进制表示 无符号数[1111] = 8 + 4 + 2 + 1 ...

qq2071114140的博客 523

银河麒麟桌面版V10搭建Qt4.8.6开发环境

银河麒麟桌面版V10搭建Qt4.8.6开发环境

qq_34932364的博客 2401

统计一个整数n的二进制表示中1的个数的几种解法

统计一个整数n的二进制表示中1的个数; 分析:此题有多种解法. 1. 除2取余法:求一个整数的二进制的表示是,用的方法是除2取余。对于本题,只是统计一下余数为1的个数而已。 2. 位模式法+移位:1的变种,用移位代除2,该方法更高效。用位模式,与1相与,取得一位。 3. 模式位法: n = n& (n -1);  考虑 n 与 n -1的二进制表示,两者相&, n-1总能将n的最低位的1,

wzb56的资料库 2725

STM32单片机:驱动ADS1115四个通道全开程序

本文介绍了德州仪器(TI)的ADS1115高精度16位模数转换器(ADC)及其应用实现。该芯片具有16位分辨率、可编程增益放大器(PGA)和低功耗特性,支持±0.256V至±6.144V量程。文章提供了完整的C语言驱动代码,包括初始化、配置寄存器读写、单次/连续转换模式设置、电压值读取等功能实现。代码通过I2C接口与ADS1115通信,支持多通道选择和不同PGA设置,可实现高精度模拟信号采集。该方案适用于需要精密测量的嵌入式系统,如传感器数据采集等应用场景。

weixin_42122070的博客 689

IM 系统设计:仿微信架构,Netty + Protobuf + WebSocket 如何支撑百万级长连接?

相比 JSON,Protobuf 的体积通常只有前者的 1/5 到 1/10,且解析速度快一个数量级。// 消息类型:1-登录,2-心跳,3-单聊,4-群聊,5-ACK// 发送方ID// 接收方ID// 消息内容// 时间戳// 消息唯一ID,用于去重和ACK。

BUG猿的博客 1378

计算机导论-7-数据类型-整数存储

计算机导论-7-数据类型 数据类型 计算机中用多媒体来统称各种数据,它们包括: 数字,文本,音频,图像,视频。(均以位模式进行存储) 计算机内部的数据格式 位:(bit,binary digit),是存储在计算机中的最小单位,0或1,用于代 表计算机设备的一种状态 位模式:是表示数据的不同类型,多个位组成一个位模式,如由16个位组成的位模式1111 1011 01101 1001,如果需要存储1000个位模式,则需要16000个开关 字节:长度为8的位模式,称为一个字节 字:它属

qq_51276412的博客 1829

【unity小技巧】实现FPS射击游戏枪武器随镜头手臂摇摆效果(2025/12/11补充)

如果我们视角移动转向,武器如果不跟着进行摇摆,会感觉我们的动作很生硬,特别是射击类游戏,如下实现武器摇摆这里主要分享两种实现方法,一种是改变武器位置,一种是修改武器旋转想要使用哪种方法都可以,看你自己喜欢,如果是我,我会选择第二种,比较简单,参数也少,而且个人感觉效果也更好,已枪中心做旋转更符合现实。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1470

计算机科学与导论 第三章数据存储(第一部分存储整数)

所有计算机外部的数据类型的数据都采用统一的数据表示法转换后存入计算机中,当数据从计算机输出时再还原回来。这种通用的格式为。

qq_44063802的博客 815

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【第 006 讲】整数底层编码:机器数与真值 | 原码反码补码 | 补码优势 | 特殊位模式 | 原码补码互转 | 快速转换工具

本文讲解有符号整数在底层的编码与转换。首先界定机器数与真值,区分无符号与有符号解释。随后讲解原码、反码、补码三种编码规则,分析补码在加减法统一运算与存储格式方面的核心优势,归纳两种特殊位模式。最后演示原码与补码互转的方法,并介绍工具辅助验证。

大模型全栈工程师 · Thanks_ks 897

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

二.2 整数表示(2.1-2.4)

补码编码和无符号数的编码

qq_42106610的博客 1249

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

剑指 Offer II 003. 前 n 个数字二进制中 1 的个数

剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 题目原意 给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。 注意: 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2 假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231−1]。本题中,如果除法结果溢出,则返回 231 − 1 解题思路 这道

Valishment的博客 279

定位模式与边偏移

固定版心右侧位置小算法:让固定定位的盒子left:50%,走到浏览器可视区一半位置。垂直居中小算法:top:50%,走父容器高度一半位置,margin负值往上走自己盒子高度一半(margin-top:负值;元素移动位置时,是相对于它原来的位置来移动的,原来的标准流位置继续保留。(静态定位就是标准流,具有标准流的所有特性)默认定位方式,无定位的意思。是元素于固定于浏览器可视区的位置(可以在浏览器页面滚动时元素的位置不变) 例 选择器 {position:fixed}是定位的盒子移动的最终位置。

W_R_Tong的博客 193

整数在计算机中的表示

       整数包含正整数,负整数和0。从数学的角度来讲,整数是无穷无尽、列举不完的,整数的大小是没有限制的。但是,如果用计算机来表示整数,则不然。因为计算机是靠数字信号来表示数,计算机所能处理的整数的长度也是由计算机的字长来决定的。这样一来,必须制定一个规则来表示整数。       下来我们以C语言中的整数表示,展开学习。在c语言中有 char,unsigned char,short int,unsigned short int,long,unsigned long。这些类型不仅有“有符号”和“无符号

hengshan的专栏 1万+

android studio为什么不能转换为整数_为什么整数可以转换为指针

为什么整数可以转换为指针_talentluke的专栏-优快云博客​blog.youkuaiyun.com问题在C/C++代码遇到下面这些表达式:int *p1, *p2;p1 = (int*)100;p2 = (int*)200;cout << "p2 - p1=== " << p2 - p1 << endl; 输出25。因为100和200都被强制转换成内存地址,即第10...

weixin_34722760的博客 140

C专家编程 第8章 为什么程序员无法分清万圣节和圣诞节 8.2 根据位模式构筑图形

C专家编程 第8章 为什么程序员无法分清万圣节和圣诞节 8.2 根据位模式构筑图形

weixin_客子光阴的博客 462

C++ 解释有符号整数和无符号整数修饰符之间的差别

C++ 允许在数据类型前放置修饰符。修饰符是用于改变变量类型的行为的关键字,它更能满足各种情境的需求。下面列出了数据类型修饰符:signed:表示变量可以存储负数。对于整型变量来说,signed 可以省略,因为整型变量默认为有符号类型。unsigned:表示变量不能存储负数。对于整型变量来说,unsigned 可以将变量范围扩大一倍。short:表示变量的范围比 int 更小。short int 可以缩写为 short。long:表示变量的范围比 int 更大。

2501_94294320的博客 749

(学习笔记)2.2 整数表示(2.2.3 补码编码)

本文系统介绍了计算机中补码表示法的核心原理与应用。主要内容包括:1)补码的数学定义与计算示例,重点解释符号位的负权重特性;2)补码表示范围的不对称性分析,展示TMin和TMax的位模式;3)关键数值的位模式规律;4)C语言实现的可移植性建议;5)与其他有符号表示法的比较。文章通过公式推导和具体示例,深入浅出地阐述了补码编码的工作原理及其在编程实践中的注意事项,为理解计算机整数表示和运算奠定了理论基础。

2302_78081749的博客 1331

别死记硬背了!用‘位模式’和‘补码’的故事,轻松理解计算机底层逻辑

本文通过生动的历史故事和生活类比,深入浅出地解释了计算机底层逻辑中的‘位模式’和‘补码’概念。从电报系统到现代计算机设计,揭示二元选择的必然性和补码的巧妙之处,帮助读者轻松掌握这些基础但关键的计算机导论知识。

weixin_29197699的博客 215

1.6 整数存储

数学家长久以来对数字记数系统很感兴趣,计算机中常用的两种整数的记数系统为二进制补码记数法和余码记数法。都基于二进制,但特性不同。   1.6.1 二进制补码记数法     现今系统中二进制补码记数法用的很普遍,其中每个数值用一个32位的模式表示。位模式中最左端的位为符号位,0代表非负数,1代表负数     32模式可以表示很大的数值,但不利于学习。因此用较少的位模式来表示数字。     ...

weixin_30737363的博客 187
上一篇: 取整数绝对值的宏定义
下一篇: 字符串匹配Sunday算法
纯属虚构
博客等级 码龄17年 86粉丝 194原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值