① 计算机怎么区分正,负号与加,减
1、正负怎么区分:数字在内存里都是2进制表示的,通过前导位就可以识别正、负数。
2、区分加减符号:符号是你编写代码时才用的,真正计算机执行的是操作码,编译器、汇编器就是负责将你书写的代码转换为机器码,比如减符号就对应一个 sub 的操作码。所以它并不能区分加减符号,做区分的是编译、汇编器。
② c语言中负数是按补码存储,怎么读出来哪
1、计算机中的负数是以其补码形式存在的 补码=原码取反+1
一个字节有8位 可以表示的数值范围在 -128到+127
用二进制表示也就是 10000000 - 01111111(注意:最高位表示符号)
最高位是1的都是负数 最高位是0的都是正数
2、如-7 原码是 10000111 然后取反(最高位是符合不用取反)得11111000
加一 得11111001 那么-7的二进制数就是 11111001
再如 -10 原码是 10001010 取反得 11110101 加一得 11110110
那么-10的二进制数就是 11110110
二进制数是逢二进一 只有0和1两个数字 没有2
③ C语言中unsigned int还能显示负数
无符号数和有符号数 在存储上并没有区别 在使用的时候 如果符号不匹配 C会做自动转换
比如 你定义了无符号的a然后赋值一个负数 -1 就等同于
a = (unsigned int)-1;
得到的a值实际上是0xffffffff (取决于编译器,32位编译器为这个值)
如果用%u输出 那么就会输出这个数字对应的10进制值 为2^32-1
但是你用%d输出 就等于
printf("%d", (int)a);
于是又被转回了-1
④ 关于c语言的 为什么会出现负数呢而且个数也不对.还有输入很长的数时什么运行的for就不动了!
出现负数,是因为奇数、偶数的和太大,超过了long(长整型)类型的最大值了。
个数是对的,0-151554545共有151554546个数,其中奇数偶数各有75777273个。
至于for不动了,是for循环进入死循环了,你的编译器中int是2bytes,最大值为32768,当i加到32769的时候,就越界了,成为负数,所以i永远不会大于你输入的151554545这个数值,所以死循环。
⑤ 用位操作写一个判断正负数的C语言代码
你好,首先要测试一下你编译器所定义的整型是多少字节,用sizeof(int)测试一下,一般是4字节,假如是4字节说明是32位,这样无符号和有符号整数区别在于第32位是1还是0,所以可以用一个数0x80000000=1000
0000
0000
0000
0000
0000
0000
0000(32),与整数做“与&”运算,假如最高位结果是1(即0x80000000),说明原来整数是负数,假如位0则是正数。
所以可以用如下代码实现
int
yu(int
num)
{
return
(num
&
0x80000000)
;
}
之后在调用函数测试return值就可以了
⑥ C语言区分int数据正负的问题
类型是对一串二进制位的解释,这16bit有两种解释,有符号整数,有无符号整数。
按有符号数来解释,最高位是符号位,1表示负数,其值为-20840。
按无符号数来解释,值为44696。
⑦ 用visualC++编写C语言显示负数
我用我的vc6.0编译的是对的,看你负数可能是变量初始化之后就有的数,说明B和C没有从屏幕上传到值,S的值也跟他们一样,感觉也是没有被重新赋值,他们的值都还是初始的值。建议调试运行下,跟你编译器有关吧。
⑧ AVR 负数的判断
有符号数比较大小,和无符号数比较大小,是不同的机器码,编译器根据变量类型自动做出选择
如果PulseLeft是无符号类型,而-1000是有符号类型,那么编译器会把-1000(16进制的0xFC18)变成无符号数,也就是64536,0当然是小于64536的,所以判断为真
这句话如果你改成if((signed int)PulseLeft<-1000)就可以了,加一个强制类型转换,告诉编译器此处是两个有符号数比较大小,就会得到期望的结果了
或者将PulseLeft声明为signed int,就不用强制类型转换了
⑨ ev3编译器中变量值为什么是负数
1.打开我的电脑--属性--高级--环境变量
2.新建系统变量JAVA_HOME 和CLASSPATH
变量名:JAVA_HOME
变量值:D:\Program Files (x86)\Java\jdk1.8.0_51
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3. 选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;