一.大端和小端的问题 对于整型.长整型.无符号整型等数据类型,Big endian 认为第一个字节是最高位字节(按照从低地址到高地址的顺序存放数据的高位字节到低位字节):而 Little endian 则相反,它认为第一个字节是最低位字节(按照从低地址到高地址的顺序存放据的低位字节到高位字节). 例如,假设从内存地址 0x0000 开始有以下数据:  0x0000         0x0001       0x0002       0x0003  0x12            0x34    …
大端和小端的概念参考之前博客: 大端/小端,高字节/低字节,高地址/低地址,移位运算 昨晚帮导师从指令中恢复图像的时候,导师要我转换成raw格式,也就是记录图像像素的二进制序列,然后反复强调让我注意大端小端.当时我也没在意,用ofstream的write方法一个个地写进去,发现有部分数据存储顺序和其他的不一致.由于时间要紧,我立刻试了下FILE*然后用"wb"模式打开文件来写,刚好要求的也是小端(因为我的win7系统就是小端存储),结果对了当时也就没管为什么之前C++的ofstream…
这个宏是在linux内核中获取的,主要的功能是能够将一个无符号字符型的参数转化为ASCII码值. ASCII : ASCII 编码里包括了128个字符.用 十进制 0  到 127 来表示 .那就对了, 0 到 127 不就是 128个字符吗. 每一个数字都代表一个字符.看ASCII 编码表 我们来看看代码: #include <stdio.h> #include <stdlib.h> #define toascii(c) (((unsigned char)(c))&0x7…
在Win 7系统中,short 表示的范围为 - 32767到 32767,而无符号的short表示的范围为0 到 65535,其他类型的同理可推导出来,当然,仅当数字不为负的时候才使用无符号类型. 有些事情,当时接触的时候模模糊糊,可是,当你在过些时间慢慢的回头看他时,觉得顿然开悟. 下面的程序显示了如何使用无符号类型,并说明了程序试图超越整型的限制时所产生的后果.在编写程序时切记不要超越这些类型所限制的范围,否则很难找出问题. #include<iostream> #define ZERO…
位数比较 由于数据的长度和平台相关,所以基于 64 位系统比较. Windows Linux unsigned int 32 bits/4294967295 32 bits unsigned long 32 bits 64 bits/18446744073709551615 unsigned long long 64 bits 64 bits size_t 32 bits 64 bits 可以看到,size_t 和 unsigned long 比较同步.另外 ssize_t 和 size_t 的…
In the C++ STL, the vector size() function return size_t, which is unsigned int, not int. So imagine this, define an empty vector<int> v, and v.size() should be 0, and you have a for loop, and has an end condition is v.size() - 1, which is 429496729…
工具:Microsoft Visual C++ 6.0 例子: int a = 1; int* b = &a; C语言规定a表示存储单元中的数据,&a表示存储单元的地址,b存储的就是a的地址 C语言规定*a代表a中存储的地址对应的存储单元中的数据,所以*b就是等于1 C语言的&*介绍完毕,开始测试本机是大端法,还是小端法? #include <stdio.h> #include <stdlib.h> int main(){ int a = 0x1234567…
数据库status字段的值有:-1,0,1 设置过滤字段,发现sql_attr_uint不支持负数,后改用sql_attr_bigint sql_attr_bigint = status sql_attr_uint:整数属性 被声明的列的值必须在32位无符号整型可表示的范围内.超出此范围的值也会被接受,但会溢出.例如-1会变成 2^32-1 或者说4,294,967,295. sql_attr_bigint:长整型属性 64位整数属性(attribute)声明.多个值(可以同时声明多个属性),可…
问题如下: 代码出问题之处:   原因分析: strlen返回一个无符号整型,也就是unsigned型,比较时应该两边的数据类型相同,故严格上来说,应该将m定义为unsigned型.       修改后如下:   VS2012调试通过.…
C机器级移位,编码表示 无符号编码表示,有符号编码表示一般最常见的方式是补码  w位补码所能表示的值范围是 首先我们得心知 补码的最高有效位是符号位,当符号位位1是表示的是负值,当符号位是0是,表示的是非负 w位补码最小值是-2(w-1)次方 ~ 2(w-1)次方 - 1; 我们用B2T(w)表示补码; B2U(w)表示无符号整型数据; 二进制  -> 十六进制    四位等于一位依次; 我们得出的无符号  数  w位二进制可表示的  值的范围为 [2(w)次方到 ~ 0]; 有符号 及补码的表…