计算机输出的数字是原码还是补码

数字在计算机中是以补码形式存储的

是否输入一个数,计算机会自动转化成补码形式存储,输出这个数时,计算机会自动把补码转换成原码显示?

例子:

#include <stdio.h>
main()
{
  int b;

  b=-1;
  printf("%d  %x\n",b,b);
  b=0xffffffff;
  printf("%d  %x\n",b,b);
  b=0x8fffffff;
  printf("%d  %x\n",b,b);
 
  b=0x80000001;
  printf("%d  %x\n",b,b);
  b=0x80000002;
  printf("%d  %x\n",b,b);
}

输出结果:

-1的原码为0x80000001,但是输出为ffffffff

0x8fffffff对应的十进制为-268435455(第一位为符号位),输出为-1879048193,对应-0x70000001,即输出的是它的补码形式

0x80000001对应的十进制为-1,输出为-2147483647,对应-0x7FFFFFFF,即输出的是它的补码形式

0x80000002对应的十进制为-2,输出为-2147483646,对应-0x7FFFFFFE,即输出的是它的补码形式

得出结论,计算机输出的数是补码形式的。

时间: 2024-09-30 15:43:58

计算机输出的数字是原码还是补码的相关文章

如何理解计算机组成中——真值,原码,补码,反码,移码之间的关系

关于原码.反码.补码和移码的定义如下 1:原码: 2:补码 3:反码 4:移码 上述公式很复杂,因此,可以总结出一些常见的规律: 原码 如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1.剩下的n-1位表示概数的绝对值. 例如: X=+101011 , [X]原= 0, 0101011    X=-101011 , [X]原= 1,0101011 位数不够的用0补全. 反码 知道了什么是原码,反码就是在原码的基础上,符号位不变其他位按位取反(就是0

计算机中的原码,反码,补码与移码

在计算机内,定点数有3种表示法:原码.反码和补码. 原码:就是二进制定点表示法,即最高位为符号位,0表示正,1表示负,其余位表示数值的大小 反码:正数的反码与其原码相同:负数的反码是对其原码逐位取反,但符号位除外.       原码10010=反码11101(10010,1为符号位,故为负) 补码:正数的补码与原码相同,负数的补码是对其原码逐位取反,但符号位除外,然后整个数加1 如果补码的符号位为0,则表示一个正数,其原码就是补码如果补码的符号位为1,则表示一个负数 移码:移码与补码的关系: [

&lt;13&gt;【了解】计算机中的进制+【理解】原码反码补码基本概念+【理解】为什么要引入反码、补码?+【掌握】位运算符介绍及使用+位运算应用:编程实现10进制转2进制

1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5 //定义10进制数,打印出10.8.16进制的值 6 int a = 13; 7 printf("%d\n",a); 8 printf("%o\n",a); 9 printf("%x\n",a); 10 11 //int 64 4个字节 12 int b = 0b0000000000000000

计算机原码、补码、反码与java移位运算符(&lt;&lt;/&gt;&gt;/&gt;&gt;&gt;)

一.机器值和真值 1.机器值 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011.如果是 -3 ,就是 10000011 . 那么,这里的 00000011 和 10000011 就是机器数. 2.真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值.例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3

计算机基础知识_原码反码补码

一.原码,反码,补码 1.原码 比如一个二进制数字 最高位是0,(0代表正数) 0010 1000 那么原码就是0010 1000 反码: 0010 1000 补码: 0010 1000 都是一样的,这个二进制数字的10进制是40 所以是正数 正数的原反补都是一样的 2.反码 反码就是原码的取反,二进制的 0变为1 1变为0 ,看最高符号位是0 还是1,如果是1,则你要0变为1,1变为0, 3.补码: 负数的的是原码 取反 在加1 变成补码(二进制数) 正数的原码 加上负数的补码就等于是做减法运

原码, 反码, 补码 详解以及负数的按位与运算

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算

原码, 反码, 补码 详解

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计

[转]原码, 反码, 补码 详解 很全

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计

关于原码, 反码, 补码的复习

原本大一时考试90+的组成原理,隔了太长时间没使用,概念也慢慢模糊了,由于最近考试的基础知识有可能用到,于是,在网上找些资料,整理成这个文章,方便以后某天回来看看,好记性真不如烂笔头. 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011.如