1.这得从二进制的原码说起(数字逻辑--东野老师):

如果以最高位为符号位,二进制原码最大为0111111111111111=2的15次方减1=32767

最小为1111111111111111=-2的15次方减1=-32767

此时0有两种表示方法,即正0和负0:0000000000000000=1000000000000000=0

所以,二进制原码表示时,范围是-32767~-0和0~32767,因为有两个零的存在,所以不同的数值个数一共只有2的16次方减1个,比16位二进制能够提供的2的16次方个编码少1个。

但是计算机中采用二进制补码存储数据,即正数编码不变,从0000000000000000到0111111111111111依旧表示0到32767,而负数需要把除符号位以后的部分取反加1,即-32767的补码为1000000000000001。

到此,再来看原码的正0和负0:0000000000000000和1000000000000000,补码表示中,前者的补码还是0000000000000000,后者经过非符号位取反加1后,同样变成了0000000000000000,也就是正0和负0在补码系统中的编码是一样的。但是,我们知道,16位二进制数可以表示2的16次方个编码,而在补码中零的编码只有一个,也就是补码中会比原码多一个编码出来,这个编码就是1000000000000000,因为任何一个原码都不可能在转成补码时变成1000000000000000。所以,人为规定1000000000000000这个补码编码为-32768。

所以,补码系统中,范围是-32768~32767。

因此,实际上,二进制的最小数确实是1111111111111111,只是二进制补码的最小值才是100000000000001,而补码的1111111111111111是十进制值的-1。

{另外:补码向原码的转换过程是:正数不变,负数保留符号位的1,其它位取反加一.

补码的计算方式是1.其符号位与数值部分一起参加运算。

2.补码的符号位相加后,如果有进位出现,要把这个进位舍去(自然丢失)。

3.用补码运算,其运算结果亦为补码。在转换为真值时,若符号位为0,数位不变;若符号位为1,应将结果求补才是其真值。}

2.下面说个codeforces上当疼的问题,以前没有注意到:

long long intNum=-2147483648; 那么我们cout<

3.还有一个编译时候warning的问题:

"warning: this decimal constant is unsigned only in ISO C90"

注意:c语言里面的常量默认是一个32位的有符号整型数。

解决方法:

1  在常数后面增加一个UL标识,或者ULL表示,如4294967295UL,这样就不会报警了

2 使用十六进制的数字,如0xFFFFFFFF

3 使用gcc -std=c99 用99标准来编译

原文:

The C90 rule that the default type of a decimal integer constant is eitherint, long, or

unsigned long, depending on which type is large enough to hold the value without overflow,

simplifies the use of constants. The choices in C99 are int, long and long long.

C89 added the suffixes U and u to specify unsigned numbers. C99 adds LL to specify long

long.

Unlike decimal constants, octal and hexadecimal constants too large to be ints are typed as

unsigned int if within range of that type, since it is more likely that they represent bit

patterns or masks, which are generally best treated as unsigned, rather than “real” numbers.

Little support was expressed for the old practice of permitting the digits 8 and 9 in an octal

constant, so it was dropped in C89.

A proposal to add binary constants was rejected due to lack of precedent and insufficient utility.

Despite a concern that a “lower-case-l” could be taken for the numeral one at the end of a

numeric literal, the C89 Committee rejected proposals to remove this usage, primarily on the

grounds of sanctioning existing practice.

搞明白了吧,出现这个告警,其实也是gcc提醒你该升级你的编译选项了。不过最安全的还是使用十六进制,或者加上UL或者ULL这样的说明。

c语言int的2 32,c语言中int(2byte)的表示范围是为什么是-32768~32767!相关推荐

  1. c语言int16位数据范围,c语言中int取值范围为16位指的是什么16位

    1.c语言中int取值范围为16位指的是什么16位 计算机用二进制表示数值,最小单位就是位(bit),可以储存0或1,16位就是有16个储存0或1的位,其中左边第一位是符号位,0代表+ .1代表-. ...

  2. c语言数据类型 占字节最少,C语言中int型是所占字节最短的数据类型。

    C语言中int型是所占字节最短的数据类型. 更多相关问题 [单选,A1型题] 满而不痛者,此为痞,载于() [单选,A4型题,A3/A4型题] 钱某,男,16岁,近日因饮酒饱食后出现胃脘胀满疼痛,嗳腐 ...

  3. c语言中int代表什么变量,c语言中int是什么意思

    C/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同. 整型变量包括下面几种类型: 1.有符号基本整型,关键字:[sig ...

  4. c语言中int a什么意思,c语言中int *a,int a和int* a什么区别?

    int *a指的是定义一个指向int类型数据的指针a,指针 int a指的是定义一个整数变量a, int* a跟int *a是同样的,只是int *a更严谨, 好比,int *a,b; 只有a是指针变 ...

  5. c语言调用calculate函数,关于c语言中int calculate函数求解。谢谢

    满意答案 fwsmtn 2018.08.20 采纳率:47%    等级:10 已帮助:566人 这个代码展示了,一个函数可以调用另一个函数,并且展示了它是如何进行的调用. 首先说一点,函数可以互相调 ...

  6. c语言int作用,c语言中int的用法

    C/C++编程语言中,int表示整型变量,是一种数据类型,下面学习啦小编就跟你们详细介绍下c语言中int的用法,希望对你们有用. c语言中int的用法:整型int C 语言提供了很多整数类型(整型), ...

  7. c语言int作用,c语言中int的用法有哪些

    c语言中int的用法有哪些 C/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同下面小编给大家整理了c语言中int的用法 ...

  8. c语言int2字节负数类型范围,c语言中int范围是多少?

    C语言中int的取值范围是:"-2147483648 ~ 2147483647".int类型在C语言中占4个字节,即32个二进制位:当表示正数时,最高位为符号位(0):当表示负数时 ...

  9. c语言int的取值范围源程序,C语言中int的取值范围是多少

    C语言中int的取值范围是多少 发布时间:2020-07-03 11:35:02 来源:亿速云 阅读:104 作者:Leah C语言中int的取值范围是多少?针对这个问题,这篇文章详细介绍了相对应的分 ...

最新文章

  1. 关于JDBC中的 PreparedStatement 的使用讲解
  2. Express2.X迁移至3.X注意事项
  3. P2519-[HAOI2011]problem a【dp】
  4. powershell 设置代理_WSL2中使用proxychains ng代理加速
  5. C++实现离散余弦变换(参数为二维指针)
  6. 芒果文件服务器,芒果云服务器
  7. 使用Asp.net MVC 2.0 +.NET 4.0 出现 “从客户端 ... 中检测到有潜在危险的 Request.Form 值”错误的解决办法...
  8. 无法处理文件 MainForm.resx,因为它位于 Internet 或受限区域中,或者文件上具有 Web 标记。要想处理这些文件,请删除 Web 标记...
  9. YOLO3实践应用之搭建开发环境(Python 3.6 、TensorFlow1.5版本)
  10. 统计学权威盘点过去50年最重要的统计学思想,因果推理、bootstrap等上榜,Judea Pearl点赞
  11. python离线语音转文字
  12. 图片格式与设计那点事儿
  13. 04、Flutter FFI 字符串
  14. yigo基础学习笔记1
  15. Shader混合模式--正片叠底、滤色、叠加
  16. 使用Python打印爱心
  17. 计算机公共课5——演示文稿软件 PowerPoint 2010
  18. 发布Jar到中央仓库报错 Remote staging failed: Staging rules failure!
  19. 论文阅读 - Is Space-Time Attention All You Need for Video Understanding?
  20. 创业公司如何公平分配股权?

热门文章

  1. 卡通雕像以及如何开始你自己的收藏
  2. 一张动图看懂常用的通信协议
  3. 计算机专业毕业简介英文,计算机专业毕业生英文简历模板
  4. 儿童大脑的奥秘——认知发展研究中的那些早期EEG/ERP
  5. Mob研究院联合明源地产研究院发布《2022年商业地产发展白皮书》
  6. 亚马逊云科技——云原生主题容器入门笔记
  7. 前端点击移动生成小爱心
  8. 童话 谢幕了。梦也该醒了:伤感日志
  9. java设计模式 英文版_Java设计模式(第2版)(精装英文版)
  10. ubuntu软件包损坏修复