C语言,八进制跟十六进制不能输出负值吗,然后他们界限值是怎么算的?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-16
C语言里的八进制跟十六进制有负数吗?

示的整数,我们都知道整数是可以是正数或负数的,所以这样表示没有问题。

不论是二进制、八进制、十进制、十六进制甚至是三十二进制还是多少多少进制,都只是一种数值的表示方法而已,它们归根结底表示的都是整数,理解了这一点就好了。
----------------------
对补充信息的回答:
我说过,这些只是不同进制对整数的表示方法。八进制、十六进制同样可以表示负数。比如你举的例子,-1这个值,十六进制表示为0xFFFFFFFF。这里面第一位数(就是0x后面的第一个F),它的二进制值是1111,这4个1的第一位1就是符号位,为0表示整个数为正值,为1表示整个数为复制。

也就是说,0x8-0xf开头的十六进制数就是负数。

八进制类似。

再说一句,计算机程序中,我们平时的正负号(+和-)是为了描述十进制数使用的,其他进制有自己的正负值表示方法,并不使用正负号。

可以肯定的回答:十六进制数和八进制数有负数,只需要在前面加上负号-即可。
例如:十六进制负数(-ox123ABC),八进制负数(-o1234567)。
从计算机原理来说,不管是十进制,八进制还是十六进制,在内存里面都是以二进制的方式储存。所以对于计算机来说,不管是啥进制,负不负数的,表示方法都相同。整数类型都以补码保存,最高位表示正负号,0表示正数,1表示负数。

首先:十进制、十六进制和八进制只是数的表示格式,不是“数”本身。所以他们不影响数的范围,当然也能表示负数

其次:在计算机编程语言中,数的表示范围是有限的,因此到底哪个范围表示正数哪个表示负数是通过约定来决定的,而不是像普通数学那样没有限制。

对于十进制而言,其实计算机编程语言是借用人的日常习惯用前置的负号表示负数,但是还是受范围的约束,因此signed int表示-2^31~2^31-1,而unsigned int 则范围0~2^32-1,而两种类型在内存内没有任何区别
而八进制和十六进制也是靠约定来决定是否可以表示负数的,对于无符号数,当然无法表示负数。如果是有负号数,是靠最高位的值来决定是否是负数,而不是前置负号

能输出负值。
实际输出什么数值取决于你用的系统函数,题中你用 printf 做输出, 是不会输出负值的,这是由 printf 函数对参数的解析方式决定的。
你如果用 输出整数 函数,此函数可以指定任意进制, 输出时会对于负数会输出负号。

  • C语言里的八进制跟十六进制有负数吗?
    答:C语言是允许负数,但在一个数字前加 - 是十进制对负数的表示法。要求的是八进制和十六进制 这两种进制就不是用在前面加 - 表示负数 德昂当 | 发布于2011-03-11 举报| 评论 5 0 有负数,只不过在定义的时候无符号数和有符号数在内存里面的表示方式是有区别的 caizhenghu | 发布于2011-03-11 举报...
  • C语言,八进制跟十六进制不能输出负值吗,然后他们界限值是怎么算的?_百...
    答:而八进制和十六进制也是靠约定来决定是否可以表示负数的,对于无符号数,当然无法表示负数。如果是有负号数,是靠最高位的值来决定是否是负数,而不是前置负号
  • C语言中八进制数不能表示负数吗?我看了一本书,说是像 -045 这种类型的...
    答:负数在十进制中用-号做前导表示,在别的进制中就没有这个前导符号了,最多表示减号。希望输入负数形式的八进制或十六进制数据,先得了解被赋值的数据类型,然后用补码形式给出数据。
  • c程序中,只有十进制可以是负数,八进制和十六进制都只能是整数是什么意...
    答:计算机内部没有负数的概念,负数只是为了表示10进制数而出现的,10进制的第一个bit表示正负,剩余表示数。八进制和十六进制的所有bit都表示数,没有负数概念。
  • C语言八进制十六进制真值问题
    答:关于八进制和十六进制的正负性,有如下几种情况:1. 如果直接使用,都认为是正值,比如 printf("%d",2*0x8008);输出 65552 2. 如果将其赋值给有符号变量,则(化为二进制后)最高位为1表示负数,为0表示正。比如 short int y=0x8008;printf("%d",y);输出 -32760 3. 如果将其赋值给无...
  • C语言中的十六进制可以为负的吗?
    答:1、可以为负数。十六进制表示负数通常用的是补码的方式表示.正数的补是它本身.负数的补码是它本身的值每位求反,最后再加一.2、例如:-3,3的十六进制为0003,-3的十六进制就是FFFD(3求反之后是C,再加1,成D)。
  • C语言中能输出负的八进制数吗
    答:都合法,有没有负数时看你的定义,如果不是unsigned 就有负数,而且你的都合法
  • 在C语言中,只有十进制可以是负数,八进制和十六进制只能是整数怎么理解...
    答:C语言编译后都会转换成二进制数据以便计算机识别。 所以你可以把八进制和十六进制转换成二进制数据,二进制可以表示负数
  • C语言有关负整型数据输出的问题
    答:你用%d输出,它定义的%d就是输出正负号和十进制整数值。你用%o输出,它定义就是不管什么负号不负号的把八进制输出出来。然而printf没有定义带符号八进制的输出格式字串而已(因为没有人习惯看到一个负的八进制或十六进制字符,只是感兴趣除外)其实,没有必要去琢磨printf到底是怎么输出的,在你能看到的...
  • 自编的C语言程序为什么输入八位十六进制数的时候就会出现负值呢_百度知 ...
    答:int的最高位是符号位,1表示负0表示正。如果你输入一个数例如(8FFFFFFF)它的二进制是1000 1111 1111 1111 1111 1111 1111 1111 符号位不变,按位取反, -111 0000 0000 0000 0000 0000 0000 0000 再加1就是它的真值 。-111 0000 0000 0000 0000 0000 0000 0001 真值应该是:-1,879,048...