unsigned

size_t_百度百科

一世执手 提交于 2020-01-27 00:07:40
size_t_百度百科 size_t 编辑本段 概述 size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件 stddef.h 的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。 例如:bitset的size操作返回bitset对象中二进制位中的个数,返回值类型是size_t。 例如:在用下标访问元素时,vector使用vector:: size_type 作为下标类型,而 数组 下标的正确类型则是size_t。 编辑本段 来源 size_t是标准C库中定义的,应为unsigned int,在64位系统中为 long unsigned int。 数据类型"socklen_t"和int应该具有相同的长度,否则就会破坏 BSD套接字层的填充。POSIX开始的时候用的是size_t, Linus Torvalds(他希望有更多的人,但显然不是很多) 努力向他们解释使用size_t是完全错误的,因为在64位结构中 size_t和int的长度是不一样的,而这个参数的长度必须和int一致,因为这是BSD套接字接口标准。最终POSIX的那帮家伙找到了解决的办法,那就是创造了一个新的类型"socklen_t"。Linus Torvalds说这是由于他们发现了自己的错误但又不好意思向大家伙儿承认,所以另外创造了一个新的数据类型 。 编辑本段

编程珠玑:位图法排序

眉间皱痕 提交于 2020-01-26 18:54:42
问题描述 输入:一个最多包含n个正整数的文件,每个数都小于n,其中n=10 7 。如果在输入文件中有任何正数重复出现就是致命错误。没有其他数据与该正数相关联。 输出:按升序排列的输入正数的列表。 约束:最多有1MB的内存空间可用,有充足的磁盘存储空间可用。运行时间最多几分钟,运行时间为10秒就不需要进一步优化。 程序设计与实现概要: 应用位图或位向量表示集合。可用一个10位长的字符串来表示一个所有元素都小于10的简单的非负整数集合,例如,可以用如下字符串表示集合{1,2,4,5,8}: 0 1 1 1 0 1 0 0 1 0 0 代表集合中数值的位都置为1,其他左所有的位置为0.编程珠玑当中建议是一年个一个具有1000万个位的字符串来表示这个文件,那么这个文件的所占容量为10000000 bit=10 7 bit,不到1MB的大小,其中,当且精当整数i在文件中存在,第i为1,这个表示利用了该问题的三个在排序问题中不常见的属性:输入数据限制在相对较小的范围内;数据没有重复;而且对于每条记录而言,除了单一个整数外没有其他关联数据。 如给定表示文件中整数集合的位图数据结构,则可以分三个阶段来编写程序 第一阶段:将所有的位都置为0,从而将集合初始化为空。 第二阶段:通过读入文件中的每个整数来建立集合,将每个对应的位置都置为1。 第三阶段:检验每一位,如果该为为1,就输出对应的整数

求二进制数中1的个数

我的未来我决定 提交于 2020-01-25 06:49:43
问题描述: 任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n = 5(0101)时,返回2,n = 15(1111)时,返回4。 若干解决方案: 普通法: 使用移位操作,判末位是否为1;移位的次数为32。 int BitCount(unsigned int n) { unsigned int c =0 ; // 计数器 while (n >0) { if((n &1) ==1) // 当前位是1 ++c ; // 计数器加1 n >>=1 ; // 移位 } return c ; } 快速法: 这个方法我最喜欢,也常用。迭代n=n&(n-1),消除最右边的1,计数。 int BitCount2(unsigned int n) { unsigned int c =0 ; for (c =0; n; ++c) { n &= (n -1) ; // 清除最低位的1 } return c ; } 动态表8bit: 使用查表法。制作包含8bit所有整数对应1的个数的表,然后匹配32位n,匹配4次。 int BitCount3(unsigned int n) { // 建表 unsigned char BitsSetTable256[256] = {0} ; // 初始化表 for (int i =0; i <256; i++) { BitsSetTable256[i] =

MD5加密算法原理及实现

≡放荡痞女 提交于 2020-01-24 23:03:37
本文转自九天之方,原文地址:http://www.cnblogs.com/hjgods/p/3998570.html MD5消息摘要算法,属Hash算法一类。MD5算法对输入任意长度的 消息 进行运行,产生一个128位的消息摘要。 以下所描述的消息长度、填充数据都以位(Bit)为单位,字节序为小端字节。 算法原理 1、数据填充 对消息进行数据填充,使消息的长度对512取模得448,设消息长度为X,即满足X mod 512=448。根据此公式得出需要填充的数据长度。 填充方法:在消息后面进行填充,填充第一位为1,其余为0。 2、添加消息长度 在第一步结果之后再填充上原消息的长度,可用来进行的存储长度为64位。如果消息长度大于2 64 ,则只使用其低64位的值,即(消息长度 对 2 64 取模)。 在此步骤进行完毕后,最终消息长度就是512的整数倍。 3、数据处理 准备需要用到的数据: 4个常数: A = 0x67452301, B = 0x0EFCDAB89, C = 0x98BADCFE, D = 0x10325476; 4个函数:F(X,Y,Z)=(X & Y) | ((~X) & Z); G(X,Y,Z)=(X & Z) | (Y & (~Z)); H(X,Y,Z)=X ^ Y ^ Z; I(X,Y,Z)=Y ^ (X | (~Z)); 把消息分以512位为一分组进行处理

How to reverse the 4 bytes of an unsigned integer? [duplicate]

前提是你 提交于 2020-01-24 15:26:19
问题 This question already has answers here : convert big endian to little endian in C [without using provided func] [closed] (13 answers) Closed 5 years ago . I am trying to reverse the unsigned integer by using the '«' and '»', and bitwise 'AND' and 'OR' (& and |), but can't figure out how to do this. What I already have; int main(int argc, char** argv) { unsigned int getal; scanf("%i", &getal); printf("%X\n", getal); return 0; } User input: 0xaabbccdd, output now: AABBCCDD, what it should

How to reverse the 4 bytes of an unsigned integer? [duplicate]

非 Y 不嫁゛ 提交于 2020-01-24 15:26:10
问题 This question already has answers here : convert big endian to little endian in C [without using provided func] [closed] (13 answers) Closed 5 years ago . I am trying to reverse the unsigned integer by using the '«' and '»', and bitwise 'AND' and 'OR' (& and |), but can't figure out how to do this. What I already have; int main(int argc, char** argv) { unsigned int getal; scanf("%i", &getal); printf("%X\n", getal); return 0; } User input: 0xaabbccdd, output now: AABBCCDD, what it should

Determining signed state for HDF5 variables in NetCDF

点点圈 提交于 2020-01-24 12:55:19
问题 My team has been given HDF5 files to read. They contain structured data with unsigned variables. I and my team were overjoyed to find the NetCDF library, which allows pure-Java reading of HDF5 files, albeit using the NetCDF data model. No problem---we thought we'd just translate from the NetCDF data model to whatever model we wanted. As long as we get the data out. Then we tried to read an unsigned 32-bit integer from the HDF5 file. We can load up HDFView 2.9 and see that the variable is an

Making sure unsigned int/long always execute in checked context in C#

有些话、适合烂在心里 提交于 2020-01-24 08:49:10
问题 Has anyone found it strange that the default context for uint and ulong is unchecked rather than checked considering that they are meant to represent values that can never be negative? So if some code is trying to violate that constraint it seems to me the natural and preferred behaviour would be to throw an exception rather than returning the max value instead (which can easily leave important pieces of data in an invalid state and impossible to revert..). Is there an existing attribute

十一、S3C2440 裸机 — GPIO

跟風遠走 提交于 2020-01-24 05:37:22
11.1 GPIO 介绍 11.1.1 GPIO 管脚 GPIO 即是输入输出端口,S3C2440A 包含了 130 个多功能输入/输出口引脚并且它们为如下显示的八个端口: 端口 A(GPA):25 位输出端口 端口 B(GPB):11 位输入/输出端口 端口 C(GPC):16 位输入/输出端口 端口 D(GPD):16 位输入/输出端口 端口 E(GPE):16 位输入/输出端口 端口 F(GPF):8 位输入/输出端口 端口 G(GPG):16 位输入/输出端口 端口 H(GPH):9 位输入/输出端口 端口 J(GPJ):13 位输入/输出端口 GPIO 的功能即是用于 CPU 采集外设信号(INPUT),CPU 输出控制信号(OUTPUT),还有一种功能称为管脚复用功能,即是 GPIO 用于其他信号功能,比如地址,串口等共呢个,GPIO 属于 SOC 的内部外设。 GPIO 的使用需要寄存器配置。 11.1.2 GPIO 寄存器 端口配置寄存器:GPACON --- GPJCON,即配置输入或是输出,还是配置为第三功能 端口数据寄存器:GPADAT---GPJDAT,用于数据的写入或读取 端口上拉寄存器:GPBUP---GPJUP,端口上拉寄存器控制每个端口组的使能/禁止上拉电阻。 当相应位为 0 时使能引脚的上拉电阻。当为 1 时禁止上拉电阻。 如果使能了上拉电阻

5.1 CUDA atomic原子操作

只谈情不闲聊 提交于 2020-01-24 03:45:55
和许多多线程并行问题一样,CUDA也存在互斥访问的问题,即当一个线程改变变量X,而另外一个线程在读取变量X的值,执行原子操作类似于有一个自旋锁,只有等X的变量在改变完成之后,才能执行读操作,这样可以保证每一次读取的都是最新的值. 在kernel 程序中,做统计累加,都需要使用原子操作:atomicAdd(); 原子操作很明显的会影响程序性能,所以可以的话,尽可能避免原子操作. CUDA原子操作API: C.1.1 atomicAdd() int atomicAdd(int* address, int val); unsigned int atomicAdd(unsigned int* address, unsigned int val); unsigned long long int atomicAdd(unsigned long long int* address, unsigned long long int val); 读取位于全局或共享存储器中地址address 处的32 位或64 位字old,计算(old + val),并将结果存储在存储器的同一地址中。这三项操作在一次原子事务中执行。该函数将返回old。 只有全局存储器支持64 位字。 C.1.2 atomicSub() int atomicSub(int* address, int val); unsigned int