精华内容
下载资源
问答
  • C语言(VC6.0)的无符号长整型是如何左移的,当左移的位数超过该数值类型的最大位数是怎么样处理的?求大神解答,不甚感激
  • 原码:最高位是符号位(1表示负数,0表示正数),剩余位就是数值位,用二进制表示。 反码:正数的反码与原码相同,负数的反码除符号位以外,其他位取反,即0变成1,1变成0。 补码:正数的补码与原码相同,负数的补...

    以下内容是个人理解,如果有说的不对的地方,欢迎指正!

    首先我们需要了解一下以下的内容(也是看的网上各种帖子,有书的同学建议多看看书上怎么说的):
    1、二进制的原码、反码和补码,以int类型为例
    原码:最高位是符号位(1表示负数,0表示正数),剩余位就是数值位,用二进制表示。
    反码:正数的反码与原码相同,负数的反码除符号位以外,其他位取反,即0变成1,1变成0。
    补码:正数的补码与原码相同,负数的补码为其反码+1。
    正零和负零的补码相同。
    我们以十进制的1和-1为例。假如都是整型int类型。
    1的原码:00000000 00000000 00000000 00000001
    1的反码:00000000 00000000 00000000 00000001
    1的补码:00000000 00000000 00000000 00000001
    -1的原码:10000000 00000000 00000000 00000001
    -1的反码:11111111 11111111 11111111 11111110
    -1的补码:11111111 11111111 11111111 11111111
    2、有符号数据在计算机中是以补码的形式存储的
    3、unsigned无符号类型二进制中没有符号位,全是数值位
    比如:二进制 10000000 00000001转换成有符号的short是-1,但是转换成unsigned short是32769(2^15+1)
    4、负数的二进制怎么转换为十进制:每个位取反(包括符号位),然后+1,转换成十进制加负号。
    比如:10000000 00000000 这个二进制是有符号的short,那么解析后得到的值就是-2^15
    5、转换规则:
    转换的遵旨就是看计算机里存储的内容是什么,然后再根据类型规则来读这一串二进制数字就行了。
    1)长类型–>短类型:取低位
    2)短类型–>长类型:高位补全。如果有符号是补符号位,正数补0,负数补1;如果是无符号都补0。
    以下面的代码为例:

    #include <stdio.h>
    int main(void)
    {
            short a = -1,a1;
            unsigned short b,b1;
            int c = 98304,c1;
            b=a;
            a1=c;
            b1=c;
            c1=a;
            printf("a=%d,c=%d\n",a,c);
            printf("b=%u,a1=%d,b1=%u,c1=%d\n",b,a1,b1,c1);
    }
    

    执行结果:
    执行结果
    int c=98304,在计算机中存储的是 00000000 00000001 10000000 00000000
    short a=-1,在计算机中存储的是 11111111 11111111
    然后我们再来看转换:
    1)b=a, b是无符号short,a是有符号short,长度相同,不需要补位或截取,那b就直接指向了a在计算机中的存储内容。
    按照无符号short类型来读取这一串二进制数字,就是2^16-1,即65535
    2)a1=c,a1是有符号short,c是有符号int,长赋值给短,低位截取16位,得到10000000 00000000这样一个二进制数字,我们按照有符号short来解析,这是一个负数,我们按照上面介绍的负数转换十进制的方法,得到值为-2^15,即-32768。
    3)b1=c,b1是无符号short,c是有符号int,长赋值给短,低位截取16位,得到10000000 00000000这样一个二进制数字,
    我们按照无符号short来解析,就是2^15 ,即32768。
    4)c1=a,c1是有符号int,a是有符号short,短赋值给长,因为c1是有符号类型,所以补符号位1,得到11111111 11111111 11111111 11111111这样一个二进制,我们按照有符号int来解析,这是一个负数,我们按照上面介绍的负数转换十进制的方法,得到的值为-1。

    展开全文
  • 把参数 str 所指向的字符串根据给定的 base 转换为一个无符号长整数     参数: str -- 要转换为无符号长整数的字符串。 endptr -- 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一...

    unsigned long int strtoul(const char *str, char **endptr, int base)

    把参数 str 所指向的字符串根据给定的 base 转换为一个无符号长整数

     

     

    参数:

    • str -- 要转换为无符号长整数的字符串。
    • endptr -- 对类型为 char* 的对象的引用,其值由函数设置为 str 中数值后的下一个字符。
    • base -- 基数,必须介于 2 和 36(包含)之间,或者是特殊值 0。

     

     

    返回值:

    该函数返回转换后的长整数,如果没有执行有效的转换,则返回一个零值。

     

     

    示例:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	char str[40] = " 10 hello world!";
    	char *ptr;
    	long ret;
    	
    	ret = strtoul(str, &ptr, 10);
    	printf("数字(无符号长整数)是%lu\n", ret);
    	printf("字符串部分是:%s",ptr);
    	
    	return 0;
    } 

     

    效果如下:

    展开全文
  • strtoul() 函数源自于“string to unsigned long”,用来将字符串转换成无符号长整型数(unsigned long),其原型为:  unsigned long strtoul (const char* str, char** endptr, int base); 【参数说明】str 为...
    头文件:#include <stdlib.h>

    strtoul() 函数源自于“string to unsigned long”,用来将字符串转换成无符号长整型数(unsigned long),其原型为:
        unsigned long strtoul (const char* str, char** endptr, int base);

    【参数说明】str 为要转换的字符串,endstr 为第一个不能转换的字符的指针,base 为字符串 str 所采用的进制。

    【函数说明】strtoul() 会将参数 str 字符串根据参数 base 来转换成无符号的长整型数(unsigned long)。参数 base 范围从2 至36,或0。参数 base 代表 str 采用的进制方式,如 base 值为10 则采用10 进制,若 base 值为16 则采用16 进制数等。

    strtoul() 会扫描参数 str 字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('\0')结束转换,并将结果返回。

    两点注意:
    • 当 base 的值为 0 时,默认采用 10 进制转换,但如果遇到 '0x' / '0X' 前置字符则会使用 16 进制转换,遇到 '0' 前置字符则会使用 8 进制转换。
    • 若 endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。本文最后的范例没有展示 endptr 参数的使用,你可以参考 strtol() 函数的范例来更加直观地了解 endptr 参数。

    【返回值】返回转换后的无符号长整型数;如果不能转换或者 str 为空字符串,那么返回 0;如果转换得到的值超出unsigned long int 所能表示的范围,函数将返回 ULONG_MAX(在 limits.h 头文件中定义),并将 errno 的值设置为 ERANGE。

    温馨提示:ANSI C 规范定义了 stof()atoi()atol()strtod()strtol()strtoul() 共6个可以将字符串转换为数字的函数,大家可以对比学习。另外在 C99 / C++11 规范中又新增了5个函数,分别是 atoll()、strtof()、strtold()、strtoll()、strtoull(),在此不做介绍,请大家自行学习。
    展开全文
  • 有符号与无符号长整型与短整型

    千次阅读 2020-04-12 11:16:04
    %u:代表十进制无符号整形 %o:代表八进制无符号整数 %x或者%X:代表十六进制无符号整数 C代码: #include<stdio.h> void main() { int a=-1; unsigned u=32767; unsigned long L=-32768; printf("a=%d,a=...

    C语言:
    %d:代表十进制有符号整形
    %u:代表十进制无符号整形
    %o:代表八进制无符号整数
    %x或者%X:代表十六进制无符号整数

    C代码:

    #include<stdio.h>
    void main()
    {
    	int a=-1;
    	unsigned u=32767;
    	unsigned long L=-32768;
    	printf("a=%d,a=%u\n",a,a);  //(1)
    	printf("a=%hx,a=%X\n",a,a);  //(2)
    	printf("u=%o,u=%X\n",u,u);  //(3)
    	printf("u=%#010X\n",u);  //(4)
    	printf("u=%#10.10X\n",u);  //(5)
    	printf("L=%1x\n",L);  //(6)
    	printf("L=%-#14.10X",L);  //(7)
    }
    

    运行结果:
    在这里插入图片描述
    第一行输出a:一个是有符号十进制整形,一个是无符号十进制整形
    第二行输出a:一个是无符号十六进制短整型,一个是无符号十六进制整形
    第三行输出u:一个是无符号八进制整形,一个是无符号十六进制整形
    第四行输出u:输出无符号十六进制,占十个长度,右对齐,左边补0,最前面加上0X,注意(0X算两个长度)
    第五行输出u:输出无符号十六进制,必须要有是个数码,右对齐,左边补0,最前面加上0X,注意(0X不算在十个数码里面)
    第六行输出L:十六进制长整型无符号数
    第七行输出L:输出十六进制无符号整形数据,一共有14个长度,必须有十位数码位,右对齐,左边补0,在前面输出0X

    这些是我以前很少关注的,嘻嘻,今天学到啦!!!

    展开全文
  • 整型包括短整型、整型和长整型,同时,这些类型又分为有符号型和无符号型。符号变量可以与整型相互转换。 各类型变量长度如下表: 类型 范围 长度 unsigned char 0-255 8位 (signed) char -127-127 8位 ...
  • 1, C语言提供了几个标准库函数,可以...● ultoa():将无符号长整型值转换为字符串。 ● gcvt():将浮点型数转换为字符串,取四舍五入。 ● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。...
  • C语言printf函数格式化打印之长整型

    万次阅读 2015-12-22 15:18:36
    有符号长整型 printf("recv %ld bytes audio data!\n", len); 无符号长整型 printf("recv %lu bytes audio data!\n", len); 跟整型相比,就是在前面加个l
  • C语言中基本整型数据类型

    千次阅读 2014-03-26 21:05:32
    整型家族包括字符、短整型、整型、长整型,它们都分为有符号和无符号两种版本 整型值相互之间的大小的规则: 长整型至少应该和整型一样长,而整型至少应该和短整型一样长 一般情况下各种类型在32、64位机上的大小...
  • 1,整形:(默认有符号数) 在内存中存的是其对应二进制补码 char(存在内存中是其ASCLL码) short(短整型) int(整形) long(整形) 2,浮点型: float double long double(不是所有编译器都支持) 3,构造类型...
  • 无符号的短整, 转为整(整是否有符号,不关心) 短整原封不动地放置到整的低字节上 2. 有符号的短整, 转为整(整是否有符号,不关心) 与前一种无符号的情况相比,多了一步:扩展符号位(短整的...
  • 嗨喽C语言整型变量

    2019-02-03 21:42:04
    1.分类 根据占用内存字节数的不同,整型变量又分为4类: ...无符号型又分为无符号基本整型(unsigned [int])、无符号短整型(unsigned short)和无符号长整型(unsigned long)三种,只能用来存储...
  • C语言——整型变量

    千次阅读 2019-06-30 12:49:12
    标题整型变量的分类: (注意:占几个字节跟操作...3)长整型:long int或long,在内存中占4个内存 4)无符号型:为unsigned 在编译器中输出变量类型所占字节数: 说明一下,这个程序我原本以为会运行得很顺利,结...
  • c语言整型常量和实型常量的写法

    千次阅读 2020-06-12 09:43:38
    十进制:平常的写法,不用加后缀,后缀 八进制:前面加数字0 十六进制:前面加0x 长整型常量:后面加字母L long num = 10L; 无符号整型常量:末尾加U ...无符号长整型常量:后缀为LU unsigned long num = 10LU; ...
  • 1.int/float to string/array: C语言提供了几个标准库函数,可以将任意类型(整型、长整型、...● ultoa():将无符号长整型值转换为字符串。 ● gcvt():将浮点型数转换为字符串,取四舍五入。 ● ecvt():将双精...
  • /关于补码的转换规则(十进制与二进制之间的转化问题)是阅读本文的基础。/ 1> C语言允许不同整数类型之间的数据进行相互赋值 例如:char ->...如果短的是无符号的,那么高字节全部补0。 如果...
  • C语言基本变量长度

    千次阅读 2013-05-17 13:14:22
    C语言的基本数据类型有以下几个: int 整型 char 字符型 float 单精度浮点型 double 双精度浮点型 另外,在基本数据类型基础上附加一些限定词,得到扩充的...long int(或long)长整型 unsigned int 无符号整型 un
  • C语言整型数据(整数)

    千次阅读 2015-01-13 18:30:41
    整型数据即整数。...长整型:类型说明符为long int或long,在内存中占4个字节。 无符号型:类型说明符为unsigned。 无符号型又可与上述三种类型匹配而构成: 无符号基本型:类型说明符为unsig
  • 把一个整型无符号),转化为字符型并打印出来 例如:4567 输出:4 5 6 7 #include #include void print(num) { if (num > 9) { print(num/10); } printf("%c ", num % 10 + '0'); } int main() { int num =...
  • short、int、long 是C语言中常用的三种整数类型,分别称为短整型、整型、长整型。 在现代操作系统中,short、int、long 的长度分别是 2、4、4 或者 8,它们只能存储有限的数值,当数值过大或者过小时,超出的部分会...
  • C语言中不同长度的数据进行位运算

    千次阅读 2019-03-01 10:48:57
    C语言中,如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。 例如:一个long型数据与一个int型数据进行位运算,右端对齐后,左边不足...(3)如果整形数据为无符号数,左边补16个0。 ...
  • 宏定义 UL无符号长整形

    万次阅读 2011-11-22 21:12:07
    现在才明白UL是标记该宏长整型 十进制 数据,而不是字符,也不是int型数据。 C语言中默认宏中的数字是整型数据。 如下面的例子: #define LENGTH (20UL*1024*1024) 你要输出他的话就要这样: printf(“LENGTH is...
  • C语言的类型

    2021-04-27 23:08:05
    C语言的类型基本类型整型浮点型实型/浮点型枚举类型 基本类型 整型 整型存在六种分类 名称 表示 长度/字节 范围(long型长度以8记)...无符号长整型 unsigned long 4或8 0 至 2^64-1 无符号短整型 unsigned short
  • C语言常量

    2021-01-25 17:11:05
    整型 int(占4个字节),整型又分有符号整型和无符号整型,有符号整型可以是正整数和负整数,无符号整型只能是正整数,即整个机器字长的全部二进制位均表示数值位,相当于数的绝对值。 长整型 long int(占4个字节)...
  • 整型包括字符、短整型、整型和长整型,且分为signed(有符号)和unsigned(无符号)两种。其最小范围如下表所示: 类型 最小范围 char 0~127 signed char -127~127 ...
  • C语言-1

    千次阅读 2020-03-08 00:23:06
    1.几个数据类型及其长度 整型 int 4字节 短整型 short int 或 short 2字节 长整型 long int 或 long 8字节...无符号长整型 unsigned long int 8字节 单精度浮点型 float 4字节 双精度浮点型 double 8字节 1字节(byte...
  • C语言笔记

    2017-05-22 12:05:11
    1.C语言中%p,%u,%lu都有什么用处?  这些都是输入输出的格式控制,比如%d表示后面的输出类型为有符号的10进制整形,%u表示无符号10进制整型,%lu表示输出无 符号长整型整数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 621
精华内容 248
关键字:

c语言无符号长整型

c语言 订阅