c语言中int取值范围为16位指的是啥16位

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中int取值范围为16位指的是啥16位相关的知识,希望对你有一定的参考价值。

当中16位与-32768~+32767又有什么关系?是不是16位指的就是32767用二进制表示时有16位数字

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

计算机用二进制表示数值,最小单位就是位(bit),可以储存0或1,16位就是有16个储存0或1的位,其中左边第一位是符号位,0代表+ 、1代表-。

2.当中16位与-32768~+32767又有什么关系?

这里的-32768~+32767是指用16位来储存一个int值的取值范围。int是integer(整数)的缩写,int类型的值必须是整数,可以是正整数,负整数或0。

3.是不是16位指的就是32767用二进制表示时有16位数字

不是,16位表示32767是0111 1111 1111 1111,而0000 0000 0000 0000 0111 1111 1111 1111也表示32767,它有32位。

扩展:关于为什么16位int值的取值范围是-32768~+32767。

二进制转化为十进制,从右往左数,第一位代表2的0次方,第二位是2的1次方,以此类推,用每一位上的数乘以对应位的值再相加即可得到对应的数值。比如1011就等于1*(2^0)+1*(2^1)+0*(2^2)+1*(2^3)=1+2+0+8=11。

那么计算机表示的16位正数范围就是从0000 0000 0000 0001到0111 1111 1111 1111。(注意:计算机表示时最左边是符号位。)

也就是正的1*(2^0)到1*(2^0)+1*(2^1)+1*(2^2)+……+1*(2^14)=(2^15)-1

也就是+1~+32767。

负数范围要了解计算机内部表示负数的方法,“2的补码”,具体方法分两步:

第一步,每一个二进制位都取相反值,0变成1,1变成0。

第二步,将上一步得到的值加1。

比如要表示16位的-1,就把+1也就是0000 0000 0000 0001取反变为1111 1111 1111 1110,再+1,也就是1111 1111 1111 1111表示-1。

那么要知道计算机表示的一个负数的绝对值就要把这个负数按照上面所说的“2的补码”规则反处理。所以16位能表示的最小负数,也就是符号位为1,其余全部为0,即1000 0000 0000 0000。

(这里比较难理解为什么确定符号为1,后面要全部取0,主要是为了经过反处理后得到一个尽量大的数值,也就是最左边位置2^15位上的值为1,这样才能得到最小的负数。)

第一步,1000 0000 0000 0000(处理时,这是一个二进制数值,1不再是符号) 减去1得到 0111 1111 1111 1111。

第二步,取反,变为1000 0000 0000 0000,即1*2^15。

综上,16位int取值范围是1000 0000 0000 0000到0111 1111 1111 1111即-2^15~(2^15)-1,-32768~+32767。

参考技术A 就是在内存中存储的位数总共是16位,内存中存储是按二进制来存的,也就是二进制总共是16位,计算就是-2^15~2^15-1,因为二进制的第一位是符号位,所以是15次方。 参考技术B 一个字节占8位(二进制位,用0,1代替)
int 为 16位,指的是取值范围是:
0000 0000 到 1111 1111
换算成 十进制,就是 -32768 ~ +32767
参考技术C 16位只2进制是16位,也就是2个字节。
补充:
所谓“位”就是bit 的意思:
一个 “位”/bit 代表一个 "0"或一个“1”二进制
16位就是代表 16个 0/1二进制
参考技术D 存储单元占用16位。

java中int变量和C语言中int变量的取值范围不一样

1、java 中 int总是4字节,但是C不一样
2、在16位C编译器中,int是2字节,在32为C编译器中int为32位,在64位C编译器中int为8字节,C语言规定,int型是目标设备(16位或32位或64位CPU的机器等等)最适宜(不是最适宜也至少是挺适宜)的整数类型,且至少要2字节。
3、也不能简单说取决于电脑,而应该说取决于编译为多少位的程序,编译为16位的基本就2字节,就像上面说的那样。然后 16位的程序也能在32位的机器上跑(比如你在32位的winxp机器里面跑16位的dos程序,虽然机器32位,但是那个16位程序里面认为int是2字节)望采纳,谢谢。
参考技术A 不同语言的变量范围不相同是很常见的现象,就是因为它们占用的字节不同再有你说的C语言int是2字节,这是很早的事了,和编译器有关,如果你用VC来编译C程序的话,它的int就是4个字节,与日java是一样的范围.

以上是关于c语言中int取值范围为16位指的是啥16位的主要内容,如果未能解决你的问题,请参考以下文章

64位系统下C语言中int值的取值范围

java中int变量和C语言中int变量的取值范围不一样

C语言int的取值范围

在C语言中为啥int型的取值范围是-32768~32767

unsign的问题

为啥C语言中有符号整型变量的取值范围是-32768~32767,麻烦详细解释一下?