精华内容
下载资源
问答
  • 无符号整型llu

    千次阅读 2019-07-18 09:50:13
    (2011-05-24 00:58:17) 转载▼ 标签: ... 原文地址:%llu64位无符号作者:融化在蓝天里 d,lx,ld,,lu,这几个都是输出32位的 hd,hx,hu,这几个都是输出16位数据的, hhd,hhx,hhu,这几个...

    转载:https://blog.csdn.net/simplehedy/article/details/7338178

    (2011-05-24 00:58:17)

    转载

    标签:

    转载

     

    原文地址:%llu 64位无符号作者:融化在蓝天里

    d,lx,ld,,lu,这几个都是输出32位的
    hd,hx,hu,这几个都是输出16位数据的,
    hhd,hhx,hhu,这几个都是输出8位的,
    lld,ll,llu,llx,这几个都是输出64位的,

    printf( "%llu ",.....)
    %llu   是64位无符号
    %llx才是64位16进制数

     

    Dev-C++下基本数据类型学习小结

    环境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall编译选项

    基本类型包括字节型(char)、整型(int)和浮点型(float/double)。

    定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对

    于int、double)对变量的取值区间和精度进行说明。

    下面列举了Dev-C++下基本类型所占位数和取值范围:

    符号属性    长度属性    基本型    所占位数    取值范围      输入符举例     输出符举例

    --           --         char        8        -2^7 ~2^7-1       %c         %c、%d、%u

    signed       --         char        8        -2^7 ~2^7-1       %c         %c、%d、%u

    unsigned     --         char        8        0 ~2^8-1          %c         %c、%d、%u

    [signed]     short      [int]       16       -2^15 ~2^15-1             %hd

    unsigned     short      [int]       16       0 ~2^16-1            %hu、%ho、%hx

    [signed]     --          int        32       -2^31 ~2^31-1             %d

    unsigned     --         [int]       32       0 ~2^32-1             %u、%o、%x

    [signed]     long       [int]       32       -2^31 ~2^31-1             %ld

    unsigned     long       [int]       32       0 ~2^32-1            %lu、%lo、%lx

    [signed]     long long  [int]       64       -2^63 ~2^63-1            %I64d

    unsigned     long long  [int]       64       0 ~2^64-1         %I64u、%I64o、%I64x

    --           --         float       32      +/-3.40282e+038        %f、%e、%g

    --           --         double      64      +/- 1.79769e+308 %lf、%le、%lg   %f、%e、%g

    --           long       double      96      +/-1.79769e+308       %Lf、%Le、%Lg

    几点说明:

    1. 注意! 表中的每一行,代表一种基本类型。“[]”代表可省略。

    例如:char、signed char、unsigned char是三种互不相同的类型;

    int、short、long也是三种互不相同的类型。

    可以使用C++的函数重载特性进行验证,如:

    void Func(char ch) {}

    void Func(signed char ch) {}

    void Func(unsigned char ch) {}

    是三个不同的函数。

    2. char/signed char/unsigned char型数据长度为1字节;

    char为有符号型,但与signed char是不同的类型。

    注意! 并不是所有编译器都这样处理,char型数据长度不一定为1字节,char也不一定为有符号型。

    3. 将char/signed char转换为int时,会对最高符号位1进行扩展,从而造成运算问题。

    所以,如果要处理的数据中存在字节值大于127的情况,使用unsigned char较为妥当。

    程序中若涉及位运算,也应该使用unsigned型变量。

    4. char/signed char/unsigned char输出时,使用格式符%c(按字符方式);

    或使用%d、%u、%x/%X、%o,按整数方式输出;

    输入时,应使用%c,若使用整数方式,Dev-C++会给出警告,不建议这样使用。

    5. int的长度,是16位还是32位,与编译器字长有关。

    16位编译器(如TC使用的编译器)下,int为16位;32位编译器(如VC使用的编译器cl.exe)下,int为32

    位。

    6. 整型数据可以使用%d(有符号10进制)、%o(无符号8进制)或%x/%X(无符号16进制)方式输入输出。

    而格式符%u,表示unsigned,即无符号10进制方式。

    7. 整型前缀h表示short,l表示long。

    输入输出short/unsigned short时,不建议直接使用int的格式符%d/%u等,要加前缀h。

    这个习惯性错误,来源于TC。TC下,int的长度和默认符号属性,都与short一致,

    于是就把这两种类型当成是相同的,都用int方式进行输入输出。

    8. 关于long long类型的输入输出:

    "%lld"和"%llu"是linux下gcc/g++用于long long int类型(64bits)输入输出的格式符。

    而"%I64d"和"%I64u"则是Microsoft VC++库里用于输入输出__int64类型的格式说明。

    Dev-C++使用的编译器是Mingw32,Mingw32是x86-win32gcc子项目之一,编译器核心还是linux下的gcc。

    进行函数参数类型检查的是在编译阶段,gcc编译器对格式字符串进行检查,显然它不认得"%I64d",

    所以将给出警告“unknown conversion type character `I' informat”。对于"%lld"和"%llu",gcc理

    所当然地接受了。

    Mingw32在编译期间使用gcc的规则检查语法,在连接和运行时使用的却是Microsoft库。

    这个库里的printf和scanf函数当然不认识linuxgcc下"%lld"和"%llu",但对"%I64d"和"%I64u",它则是

    乐意接受,并能正常工作的。

    9. 浮点型数据输入时可使用%f、%e/%E或%g/%G,scanf会根据输入数据形式,自动处理。

    输出时可使用%f(普通方式)、%e/%E(指数方式)或%g/%G(自动选择)。

    10. 浮点参数压栈的规则:float(4 字节)类型扩展成double(8 字节)入栈。

    所以在输入时,需要区分float(%f)与double(%lf),而在输出时,用%f即可。

    printf函数将按照double型的规则对压入堆栈的float(已扩展成double)和double型数据进行输出。

    如果在输出时指定%lf格式符,gcc/mingw32编译器将给出一个警告。

    11. Dev-C++(gcc/mingw32)可以选择float的长度,是否与double一致。

    12. 前缀L表示long(double)。

    虽然long double比double长4个字节,但是表示的数值范围却是一样的。

    long double类型的长度、精度及表示范围与所使用的编译器、操作系统等有关。

    展开全文
  • 无符号(1字节) 0到255 有符号(1字节)-128到127 无符号(2字节) 0到65535 有符号(2字节) -32768到32765 无符号(4字节) 0到4294967295 有符号(4字节)-2147483648到2147483647 ...
    无符号(1字节) 0到255
    有符号(1字节)-128到127
    无符号(2字节) 0到65535
    有符号(2字节) -32768到32765
    无符号(4字节) 0到4294967295
    有符号(4字节)-2147483648到2147483647
    追问:
    怎么算的?
    追答:
    一个字节8位,无符号的可以从0000 0000(0)到1111 1111(2^8-1=255)
    有符号:有一位表示符号位(1表示负,0表示正)正数从0 000 0000(0)到
    0 111 1111(2^7-1=127,第一位0表示正)。
    负数:从1 000 0000到1 111 1111(-(2^7-1)=-127)

    负数在计算机中用补码表示-0的补码为0000 0000与+0的表示一致,所以用0000 0000表示+0和-0。所以1 000 0000不表示-0而表示-128。
    其它同理:
    2个字节有16位,无符号从0000 0000 0000 0000(0)到1111 1111 1111 1111(2^16-1)
    有符号:(-2^15到2^15-1)
    展开全文
  • int 是无符号的整数类型,直白点说有符号无符号整型就是能不能存放负数。 根据程序编译器的不同,整形定义的字节数不同。51类单片机的C语言中,int代表2byte(16位);如果是32位ARM处理器的C语言中,则int代表4...

    int 是整数类型,用于定义变量的类型,有符号,unsigned int 是无符号的整数类型,直白点说有符号无符号整型就是能不能存放负数。
    根据程序编译器的不同,整形定义的字节数不同。51类单片机的C语言中,int代表2byte16位);如果是32ARM处理器C语言中,则int代表4byte(32)。(如32XP)把int定义为4 byte(32)。  注意一下取值范围。若在32位系统中,signed int a, a范围[-2^31 , 2^31 -1] [-21474836482147483647]
    所以一个int定义需要注意几个方面,一个是类型,一个是存储数据的大小范围。

    展开全文
  • 1、有没有人尝试过将负数赋给一个无符号整型变量?知不知道这样做会发生什么?还没有尝试的就让我们来探索下无符号整型隐藏的秘密。 先来看看下面代码: int main() {  unsigned int val = -1;  cout  return ...

    1、有没有人尝试过将负数赋给一个无符号整型变量?知不知道这样做会发生什么?还没有尝试的就让我们来探索下无符号整型隐藏的秘密。

    先来看看下面代码:

    int main()
    {
          unsigned int val = -1;
          cout<<val<<endl;

          return 0;
    }

    执行的结果:

    4294967295
    请按任意键继续. . .

     

    ----------------------------------------

    你可能禁不住惊叹:这么大!没想到吧,把一个负数赋值给无符号整型变量,会产生这么大的数!为啥呢?好,我们一步步分析:

    首先,仔细观察输出的结果4294967295,发现4294967295=2^32-1,哦!好像有点规律!但是,又为啥会是这样?让我们先来讨论下int和unsigned int的表现形式,其中他俩都是4个字节,32位的二进制表示,但int有一位是符号位,unsigned则没有。那-1的int类型表示为1000 0000 0000 0000 0000 0000 0000 0001,那么将其强制转换成unsigned int 应该是1000 0000 0000 0000 0000 0000 0000 0001(红色为符号位),用指数表示是2^31+1,而不是2^32-1!这是怎么回事呢?(*^__^*) 嘻嘻……,这里还隐藏着一个小秘密!那就是int在真正存储在内存中的二进制数不是值的原码,而是其补码(为了便于运算,可以参考《数字逻辑》)!那么在强制类型转换之前,int变量-1内存中存储的是1111 1111 1111 1111 1111 1111 1111 1111,等于2^32-1。soso在强转为unsigned int时,就是读取该块内存的值赋给变量!这样val就变成了4294967295,超级大的数!所以各位同仁在处理unsigned int 赋值时一定要谨慎!如果出错将影响甚大,因为unsigned int一般都会作为for或while循环体的标识类型,如果将负值赋给它,将导致严重的假死循环!痛哉!痛哉!

    2、负数的补码:负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。

    同一个数字在不同的补码表示形式里头,是不同的。比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。在这篇补码概述里头涉及的补码转换默认把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。

    【例2】求-7的补码。

    因为给定数是负数,则符号位为“1”。取反加一

    后七位:-7的原码(10000111)→按位取反(11111000)(负数符号位不变)→加1(11111001)

    所以-7的补码是11111001。

    3、正数的补码:正数的补码是其原身。

    与原码相同。

    【例1】+9的补码是00001001。(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。)

    4、对相同符号的不同类型的数据进行赋值,则不会出现数据变化的情况,

    例如:

    	int hh = 0;
    	hh = (double)-818.626381968738; //hh结果是-818,其是舍弃后面的,而不会进行几舍几入运算的。
    6、虽然上面的进行相同符号的取值赋值时不会出现错误,但是opencv如果是不同数据类型进行操作的话则会出现错误,有的是不会报错,但数据不对。

    其正确的读取方法是:

             Mat camera_matrix = Mat(3, 3, CV_64FC1, camD);     //定义的图像是64位的double型
             Mat distortion_coefficients = Mat(5, 1, CV_64FC1, distCoeffD);
    	if (first == false){
    	first = true;
    	cvSave("Intrinsics.xml", &CvMat(camera_matrix));
    	cvSave("rotation.xml", &CvMat(rotM));
    	cvSave("translation.xml", &CvMat(tvchange));
    	}
    
    	float fx=0, fy=0, cx=0, cy=0, k1, k2, p1, p2, k3;  //define intrinsic, distortion_coeff
    	float r11, r12, r13, r21, r22, r23, r31, r32, r33; //rotation matrix
    	float t1, t2, t3;
    
    	CvMat *intrinsic_matrix = (CvMat*)cvLoad("Intrinsics.xml");
    	CvMat *rotation_mat_final = (CvMat*)cvLoad("rotation.xml");
    	CvMat *translation_vector = (CvMat*)cvLoad("translation.xml");
    
    	fx = CV_MAT_ELEM(*intrinsic_matrix, float, 0, 0);    //读取的值是错误的,但是程序不会报错,其是由于数据类型跟存储的不同一个是double,一个是float。
    	fy = CV_MAT_ELEM(*intrinsic_matrix, double, 1, 1);   //读取的值是正确的。
    	cx = CV_MAT_ELEM(*intrinsic_matrix, double, 0, 2);
    	cy = CV_MAT_ELEM(*intrinsic_matrix, double, 1, 2);
    
            float hh = 0;
    	hh = (double)-818.626381968738;    //但是这个直接赋值的却是正确的,其hh为-818.626381被舍弃了一些数据位。
    










    展开全文
  • C语言中各种整型类型所占字节

    千次阅读 2019-10-05 16:26:35
     char*(即指针变量): 2个字节   short int : 2个字节   int: 2个字节  unsigned int : 2个字节  float: 4个字节  double: 8个字节  long: 4个字节  long long: 8个字节  unsigned long:...
  • Java一个汉字占几个字节(详解与原理)(转载)

    万次阅读 多人点赞 2019-05-29 23:33:35
    今天学习Netty做定长消息发送时,发现到UTF-8编码下的中文并非两个字节,是三个字节,omg~,遂翻了篇博客后才发现原来java中文对应的字节长度还有这么多说道,涨姿势了,咳咳~ 原文如下: 忒长了,原文作者大大辛苦...
  • JavaScript 32位整型无符号操作

    千次阅读 2015-08-14 08:30:51
    在 JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢? 有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号... 进行位操作时,是采用32位 有符号 整型,这意味着其转换的结果也是32位有
  • C++ 整型字节

    2018-11-19 14:36:06
    要获得无符号类型必须指定该类型为unsigned,比如unsigned long。 unsignedint类型可以简写为unsigned,也就是说,unsigned后不加其他类型说明符就意味着是unsignedint。     一字节表示八位,即:1byte =8 .....
  • 1、类型 bool -> System.Boolean (布尔型,其值为 true 或者 false) byte -> System.Byte (字节型,占 ... System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127) char -> System.Ch...
  • #include using namespace std; typedef unsigned char BYTE; // Reader:shizhixin // Email:szhixin@gmail.com // Blog:...// Date:2012-05-07 // Function:求一个字节(8bit)的无符号整型变量表示的
  • 已知整形变量在内存中占4个字节的空间,现有一无符号整形变量a = 0x20190125,请编写函数求出变量a所占内存每个字节的值是多少? 用共用体方法 union share { int b; char arr[10];//char型数组内每个空间...
  • C语言的整型和长整型字节

    千次阅读 2016-02-25 23:18:07
    16位系统:long是4字节,int是2字节 32位系统:long是4字节,int是4字节 64位系统:long是4字节,int是4字节 ...比如当年的dos是运行在16位CPU下的,他的int就是两个字节,win95是运行在32位CPU下的,但是win9
  • 计算机以二进制补码存储数值,当一具有符号位的数据值储存在计算机中的时候,计算机会以最高位为符号位,其余位数取该数绝对值的二进制补码来储存。 有符号char范围: 有符号char最大值(正数):0111 1111即...
  • 一个字母占几个字节

    千次阅读 2018-12-18 15:53:21
    一个字母占几个字节  (2010-11-06 10:41:24) 转载▼ 标签:  杂谈   我真的搞不清楚你到底想问什么,而且你有的表述也不准确严谨 所以只好把基本的单位先说下。 比特(bit)即一个二进制位 例如...
  • C语言

    万次阅读 多人点赞 2019-12-18 23:01:50
    C语言 42.C语言是一种计算机高级语言。 43.C语言允许直接访问物理地址,能进行...48.C程序书写格式,允许一行内可以写几个语句 49.C程序的语句行号 50.C语言的每个语句的最后必须有一个分号 51.C语言本身没有输入...
  • 小甲鱼零基础入门学习python笔记

    万次阅读 多人点赞 2019-08-14 11:06:30
    10次方) 类型转换 字符型转换为整型 其它同上 type()函数(可查看变量类型) isinstance()函数(用来判断两输入参数类型是否一致) 006 Pyhon之常用操作符 算术操作符 注:python中 \ 为除法, \\ 为整除 ,% 为...
  • 1. 这本书对Python的知识点的描述很详细,而且排版看的很舒服. 2. 几个例题:假装自己从零开始学,将一些有代表性、有意思的例题抽取出来. 3. 还有自己对一部分课后复习题,全部课后上机实践题的解题思路
  • int(4)、int(8)、int(11) 分别占用几个字节 ?MySQL 数据类型介绍数值类型日期/时间类型字符串类型int(4)、int(8)、int(11) 分别占用几个字节 ?MySQL 中的整数型数据类型:不同整数类型的取值范围:回归正题...
  • 基本内置类型中整型浮点型占多少字节
  • java中无符号类型的解决方案

    万次阅读 2017-03-15 17:09:38
    1.无符号和有符号 计算机中用补码表示负数,并且有一定的计算方式;另外,用二进制的最高位表示符号,0表示正数、1表示负数。这种说法本身没错,可是要有一定的解释,不然它就是错的,至少不能解释,为什么字符类型...
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    当年,我们记着几个一定要掌握的重心: 重点的题目添加了【重点】前缀。 索引。 锁。 事务和隔离级别。 因为 MySQL 还会有部分内容和运维相关度比较高,所以本文我们分成两部分【开发】【运维】两部分。 对于...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    环境搭建 195 其他 196 输入域 196 输出域 196 异常分析 196 错误猜测 196 第一阶段 第一章 测试基础 什么是软件测试: 两依据(需求、测试用例),两方法(手工、自动),一对比(预期结果和实际结果的对比)...
  • Fist:why? 有时候只知道什么还不够,我们还需要为什么,所以我在整个数据结构系列中都...整型数据在计算机低层组织结构包括无符号数、有符号数 1.1 无符号数 现在常见的编程语言中支持无符号数的只有C\C++, 通过u...
  • stm32f1xx_hal_uart.c文件中对HAL_UART_Receive_IT()函数的描述为 ``` HAL_StatusTypeDef HAL_UART_...本人使用串口中断接收温度数据,而温度数据是有符号整型的,与上述函数定义矛盾,请问应该怎样更改呢??
  • 负数转无符号运算 (-1对256取模)

    千次阅读 2018-10-22 15:33:16
     原文是这样说的:C++中,把负值赋给unsigned 对象是完全合法的,其结果是初始值对无符号类型表示数值总数取模后的余数。所以,如果把-1赋给8位的unsigned char,那么结果是255,因为255是-1对256求模后的值。 ...
  • 上一篇博客我们主要介绍了布尔代数和C语言当中的几个运算符。那么这一篇博客我们主要介绍在计算机中整数是如何表示的,诸如我们在编码过程中遇到的对数据类型进行强制转换可能会得到意想不到的结果在这篇博客里你会...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    注意,C#语言中不包括C++语言中的->符号。 1.3.4 类的构造函数和析构函数 在建立类的对象时,需做一些初始化工作,例如对数据成员初始化。这些可以用构造函数来完成。每当用new生成类的对象时,自动调用类的构造函数...
  • Java整数占几个字节? 答:占4个字节,共32个比特位 1个字节占8个比特位(1B(byte)= 8 bit) 因此,类型和字节对应如下 byte 1 short 2 char 2 int 4 float 4 double 8 double 8 ---------------------------...
  • 1、格式字符 格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。 格式说明总是由“%”字符开始的。... 按十进制整型数据的实际长度输出 longdecimali...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,251
精华内容 15,300
关键字:

无符号整型几个字节