当前位置:首页 » 编程语言 » c语言数组怎么存放负数吗
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言数组怎么存放负数吗

发布时间: 2022-09-26 03:08:48

㈠ 关于在c语言中无符号整形存储负数问题

你的理解是对的。
最高位为1时,对于有符号来说,这个数是负数,而对于无符号数而言,由于最高位也是有效存储位,所以可以存储更大范围的数。
话再说回来,既然是无符号数,输出格式应该是"%u",而不是"%d",这样才能做到“表里如一”,“改头换面”只会乱了自己,这不是游戏,严谨是必须的。

㈡ c++中数组怎么存储负数

您好,很高兴能回答您的问题。
在C++中,存储负数和存储
正数
是一样的形式哦,可以给数组赋值,也可以从键盘
输入数据

以上就是我的回答,希望能帮助到您。若有不当之处,敬请批评指正。

㈢ 在c语言中怎么表示负数。

第一位符号位1为负,0为正。
正数的补码和2进制原码是一样的。
负数的补码:
1、先取绝对值|x|

2、对|X|+1

3、对|X|+1
取反,就得到它的补码了

计算机中存放整型数据都是按补码的形式存放的。

(3)c语言数组怎么存放负数吗扩展阅读:
有符号数的表示方法是由硬件决定,而不是由C决定的。有三种表示方法:
1、二进制原码
0000
0001
表示
1
1000
0001
表示
-1
这个方法有个缺点是有两个零:
+0

-0。这会引起混淆,而且用两个位组合来表示一个值也有些浪费。
2、二进制补码(最普遍的系统)
区别在于
singned

unsigned:
1)如果是无符号字节,
1000
0000
该组合为
128
2)如果是有符号字节,
1000
0000
该组合为
-128
第一种表示数的范围是
0
~
255;
第二种表示数的范围是
-128
~
+127,对于一个二进制补码数取负数,最简单的方法就是取反、加
1。
3、二进制反码
通过反转位组合中的每一位以形成一个数的负数,例如:
0000
0001
表示
1
1111
1110
表示
-1
这种方式也有一个
-0:1111
1111。其范围是
-127
~
+127。

㈣ C语言数组下标可以为负吗

下标可以是负值,它的意思是向前寻址,前提是你知道向前寻址寻的内存地址的东西是你之前已经指定好的,就相当于你动态开辟一块内存给你的数组,这样这个内存里面的所有数据都是你需要的,向前寻址也没什么问题。

㈤ C语言数组下标可以为负吗

分清声明还是语句。
声明里的中括号里的数字不能为负。例如 int a[-2]; 是错的,数组大小不能为负。

语句里的中括号,C/C++ 看成运算符,不叫标点符号。
数组元素和指针有恒等关系:
a[i] == *(a+i)
所以,i 为 负 的时候,a[i] == *(a- fabs(i))。只要 a-fabs(i) 这个地址里 有 数值,就可以拿来 运算使用。

"很多书上说数组下标不能为负" -- 因为是初级教材。

高级教材里甚至提到, a[i] == i[a] 这也是正确的 !(有人在“知道”里问过,我也回答过。)
当然,只能是变量形式,不能写阿拉伯数字,事实上,也确确实实正确的。

㈥ 数组如何存储负数

任何数组,只要能存整数,那么必然可以直接存负数....

lz想问的不应该是这个意思吧。

㈦ c语言新手提问 如何定义数组下标为负数的数组

下表为负的数组在 C 语言里并不是不能做到。


首先,创建一个正常的数组 int A[20];。然后用指针指向其中间的元素 int *A2 = &(A[10]);


这样,A[-10 ... 9] 就是一个可用的有效范围了。

/*样例示范*/
#include<stdio.h>

intmain(intargc,constchar*argv[])
{
intA[20],*A2=&(A[10]),i;

for(i=0;i<20;i++)A[i]=i*2;

for(i=-10;i<10;i++)printf("%d ",A2[i]);

return0;
}

㈧ 在c语言中怎么表示负数。

第一位符号位1为负,0为正。 正数的补码和2进制原码是一样的。

负数的补码:

1、先取绝对值|x| ;

2、对|X|+1 ;

3、对|X|+1 取反,就得到它的补码了 。

计算机中存放整型数据都是按补码的形式存放的。

(8)c语言数组怎么存放负数吗扩展阅读:

有符号数的表示方法是由硬件决定,而不是由C决定的。有三种表示方法:

1、二进制原码

0000 0001 表示 1

1000 0001 表示 -1

这个方法有个缺点是有两个零: +0 和 -0。这会引起混淆,而且用两个位组合来表示一个值也有些浪费。

2、二进制补码(最普遍的系统)

区别在于 singned 和 unsigned:

1)如果是无符号字节, 1000 0000 该组合为 128

2)如果是有符号字节, 1000 0000 该组合为 -128

第一种表示数的范围是 0 ~ 255;

第二种表示数的范围是 -128 ~ +127,对于一个二进制补码数取负数,最简单的方法就是取反、加 1。

3、二进制反码

通过反转位组合中的每一位以形成一个数的负数,例如:

0000 0001 表示 1

1111 1110 表示 -1

这种方式也有一个 -0:1111 1111。其范围是 -127 ~ +127。

㈨ c++中数组怎么存储负数

您好,很高兴能回答您的问题。
在C++中,存储负数和存储正数是一样的形式哦,可以给数组赋值,也可以从键盘输入数据。
以上就是我的回答,希望能帮助到您。若有不当之处,敬请批评指正。

㈩ 关于C语言负数的存储问题。

首先要理解这个范围怎么来的
因为 char 和 unsigned char 是1个字节,一个字节=8个位,即1byte=8bit,计算机能用8个位表示的最大值就是1111 1111,即255,这是uchar 的,char型数据第8位是正负数的,所so char (-128 ~+127) 即 (正负)111 1111 ,超出范围的赋值,就不确定它会被计算机理解成什么了,你可以写个测试代码看一下