c语言中的“最高位为符号位”。指的是什么?什么是符号位?有什么特性?只有字符型的才有符号位吗?

作者&投稿:剧油 (若有异议请与网页底部的电邮联系)
计算机中表示数是用机内码表示的(二进制),分为原码、反码和补码,符号位用来表示一个数是正数还是负数,当符号位为0时表示正数,为1时表示负数,只有数值型才有符号位。

原码、反码、补码- -
(1)原码表示法
原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作〔x〕原。
例如,X1= +1010110
X2= 一1001010
其原码记作:
〔X1〕原=[+1010110]原=01010110
〔X2〕原=[-1001010]原=11001010
原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:
最大值为0.1111111,其真值约为(0.99)10
最小值为1.1111111,其真值约为(一0.99)10
当用8位二进制来表示整数原码时,其表示范围:
最大值为01111111,其真值为(127)10
最小值为11111111,其真值为(-127)10
在原码表示法中,对0有两种表示形式:
〔+0〕原=00000000
[-0] 原=10000000
(2)补码表示法
(2)补码表示法
机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作〔X〕补。
例如,[X1]=+1010110
[X2]= 一1001010
[X1]原=01010110
[X1]补=01010110
即 [X1]原=[X1]补=01010110
[X2] 原= 11001010
[X2] 补=10110101+1=10110110
补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:
最大为0.1111111,其真值为(0.99)10
最小为1.0000000,其真值为(一1)10
采用8位二进制表示时,整数补码的表示范围:
最大为01111111,其真值为(127)10
最小为10000000,其真值为(一128)10
在补码表示法中,0只有一种表示形式:
[+0]补=00000000
[+0]补=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失)
所以有[+0]补=[+0]补=00000000
3)反码表示法
(3)反码表示法
机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作〔X〕反。
例如:X1= +1010110
X2= 一1001010
〔X1〕原=01010110
[X1]反=〔X1〕原=01010110
[X2]原=11001010
[X2]反=10110101
反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。
例1. 已知[X]原=10011010,求[X]补。
分析如下:
由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即
[X]原=10011010
[X]反=11100101
十) 1

[X]补=11100110
例2. 已知[X]补=11100110,求〔X〕原。
分析如下:
对于机器数为正数,则〔X〕原=〔X〕补
对于机器数为负数,则有〔X〕原=〔〔X〕补〕补
现给定的为负数,故有:
〔X〕补=11100110
〔〔X〕补〕反=10011001
十) 1
〔〔X〕补〕补=10011010=〔X〕原

补码滴意思的啦~~~
1是负的,
通常在定义的时候有给出符号位声明变量。

有关c语言的问题 如果用%d输出无符号类型的最大值 则最左边的位(代符号类型的符号位)为1的~

举个栗子,
short整数是1个字节,表示有符号整数的范围是 -128~127,
127对应的二进制数是这样的:0111 1111,最左边的位是0,表示它是个正数,
-128对应的是(反码,实际计算机是用补码!):1111 1111
最左边一位是1,表示它是负数,即最左1位是符号位,剩下的其它7位才用来表示数值的大小。

但无符号的short表示的范围是0~255,
255对应的是1111 1111
八个数位都用来表示数值大小

-128~127 和0~255 都是有256个数,只是范围不一样了。

如果用d%,它就把最左为当成符号位,如果用u%它就把它当成数值位
所以如果你用d%输出无符号数,就把本来是数值位的最左位当成了符号位,你试一下
unsigned short s=255;printf("255 : d%",s);会输出什么?

如果还是不太理解,你需要再看一下数据类型那一段的教程,百度一下补码,反码之类的。。。

下限就是最高位符号位为1 其它位都是0
符号位就是符号位,以unsigned char 为例
1 111 1111 是 -1 用补码好看些 取反加1 后就是 0 000 0001
1 111 1110 是 -2 补码 0 000 0010
...
1 000 0000 补码 1 000 0000 0x80 就是 -128
char 型为 -128到 127
int型也是同样。

c语言中的“最高位为符号位”。指的是什么?什么是符号位?有什么特性...
答:计算机中表示数是用机内码表示的(二进制),分为原码、反码和补码,符号位用来表示一个数是正数还是负数,当符号位为0时表示正数,为1时表示负数,只有数值型才有符号位。原码、反码、补码- - (1)原码表示法 原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般...

c语言中符号位是什么意思?
答:问题一:c语言中符号位是什么意思? 你定义一个数 其实在计算机里面都是转化为二进制,也就是0和1,然后 他的最高位就代表符号,最高位的 0 和 1 代表的就是这个数的正负 问题二:到底什么是带符号的8位二进制 所谓带符号的8位二进制码,就是从8位二进制码中拿出1位作为符号位:0表示+"...

c语言中符号位是什么意思?
答:你定义一个数 其实在计算机里面都是转化为二进制,也就是0和1,然后 他的最高位就代表符号,最高位的 0 和 1 代表的就是这个数的正负

c语言,什么叫对数据的最高位?
答:第一个问题:符号标志位就是,比如int型为有符号整形,占两个字节,一共16位,最高位就是符号标志位,当输入-1放到int型时最高位就为1,此时的1是当符号标志位使用,不代表数值,1时表示存储的数为负数,0表示为负数。第二个问题:是数据最高位,不是对数据最高位,比如10000000000000000,这个二...

有符号数的最高位是指哪一位
答:有符号数的最高位是符号位,0表示正数,1表示负数。原码、反码、补码,符号位是相同的。

汇编语言溢出和进位的判断
答:在算术运算指令中,操作数是有符号数,最高位是符号位,负数用补码表示。在运算产生的若干标志位中,符号标志位反映的是运算结果的最高位。进位标志位是在运算中最高位产生进位时被置位。而溢出标志位要跟据操作类型、进位标志、以及运算结果的符号位变化来确定置位或复位。即两个操作数运算时:○ ...

计算机中符号位是什么
答:计算机中的符号位,就是在处理二进制数据时,专门规5261定有一位,是用来确4102定数据的正负,符号位是16531表示负数,是0表示正数。这里说的是有符号数,这个符号位通常是数据的最高位,如8位数据,左边第一位是符号位,后边七位用来表示数据大小。

c语言中表达式的最高位的数据类型是什么意思
答:最高位代表符号。c语言中表达式的最高位的数据类型是最高位代表符号的意思。C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行。

char取值范围
答:1、char取值范围是 -128~+127。2、我们先来看 signed char的最大值。 最高位是 符号位, 0 代表正数; 1 代表负数。0 1 1 1 1 1 1 1 这个值等于 2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6 = 127 。 也有一个简便计算方法:2^7 -1 = 128-1 =12...

原码是怎么算
答:在计算机内,定点数有3种表示法:原码、反码和补码 所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。 补码表示法规定:正数的补码与其原码...