为什么8位二进制数的范围是-128~127

1.计算机对带符号数的表示有三种方法:原码、反码和补码 
   8位原码反码能够表示数的范围是-127~127 
   8位补码能够表示数的范围是 -128~127 
   所以既然范围是-128~127,那肯定是用补码表示的。

10000000-11111111表示-128到-1,  00000000-01111111表示0-127

补码的1111 1111转换成原码就是1000 0001,也就是-1。

在补码中用(-128)代替了(-0),所以补码的表示范围为:

注意:(-128)没有相对应的原码和反码, (-128) = (10000000),把10000000取反加1就是-128.

2.在计算机中数据一般用补码来存储,因为cpu只能做加法运算。

时间: 2024-10-18 23:31:21

为什么8位二进制数的范围是-128~127的相关文章

汇编一点点提高3——键盘输入8位二进制数,存入NUM单元,并在屏幕上显示对应的16进制数

此程序要注意一下几点: 1.dos1号功能--带回显的键盘输入,自动存入al 2.dos7号功能--不带回显的键盘输入,自动存入al,若要在屏幕中显示要调用DOS2号功能 3.将输入的多个二进制数转换为ASCII码 input:  mov ah,1  int 21h  add bl,bl  cmp al,'1'  jnz P1  inc bl  P1: dec ch  jnz input 4.换行子程序: newline: mov ah,2 mov dl,13 int 21h mov ah,2

8位有符号的取值范围是-128~+127

这是一个困惑了我几年的问题,它让我对现在的教科书和老师极其不满,从我N年前开始摸电脑时,就几乎在每一本C++教科书上都说,8位有符号的取值范围是-128~+127,为什么不是-127~+127呢,后来的java,int的聚值范围,再32位计算,-2^31 ~ +2^31-1,可是,却从来没有任何一本教科书或一个老师比我解释过这个问题 原因没有在工作上或者是什么地方直接遇到它,所以我也一直忽略它,但心里总是有一根刺.直到刚才!!!! 就是刚才,无聊之极,在看汇编的书时,又遇到它了,但一如以往,书上

[软考]8位二进制数,可以代表.

计算机内部的8位二进制数码,可以以不同的形式,代表各种数字... ――――――――――――――――――――――――――――――――――――――――――― 二进制数码 | 无符号数 原码 反码 补码 移码―――――――――――+――――――――――――――――――――――――――――――― 0000 0000 | 0 +0 +0 0 -128 0000 0001 | 1 +1 +1 +1 -127 0000 0010 | 2 +2 +2 +2 -126 …… …… | …… …… …… …… ……

八位二进制数为什么表示范围(-128~~+127)理解

计算机对带符号数的表示有三种方法:原码.反码和补码    8位原码和反码能够表示数的范围是-127~127    8位补码能够表示数的范围是 -128~127    所以既然范围是-128~127,那肯定是用补码表示的. 10000000-11111111表示-128到-1,  00000000-01111111表示0-127 补码的1111 1111转换成原码就是1000 0001,也就是-1. 补码就是二进制表示负数的一种方法 引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原

交替位二进制数

给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等. 示例 1: 输入: 5输出: True解释:5的二进制数是: 101示例 2: 输入: 7输出: False解释:7的二进制数是: 111示例 3: 输入: 11输出: False解释:11的二进制数是: 1011 示例 4: 输入: 10输出: True解释:10的二进制数是: 1010 参考代码: class Solution: def hasAlternatingBits(self, n): l

将float类型中的32位二进制数用union表示出来

用十六进制表示出来的代码,考虑到联合体的一些特性.计算机组成原理中反码补码原码的特性浮点数表示的IEEE754标准.对于32位,S(符号位(1)),E(阶码位(8)),M(尾数(23)).对于64位,S(符号位(1)),E(阶码位11)),M(尾数(52)).计算方法,符号位,0正1负.阶码位,计算出值减去127为真正的阶码(小数点在数据中的位置).尾数不操作.如:0 10000010 10010000000000000000000,step1.0->整数step2.10000010 ,算得为1

为什么数值类型byte取值范围是(-128~127)?

在解决这个问题之前,我们先了解几个概念? 一.原码, 反码, 补码的概念 正数的反码和补码都与原码一样: 负数的反码.补码与原码不同,负数的反码:原码中除去符号位,其他的数值位取反,0变1,1变0.负数的补码:其反码+1. 做个小Demo,分别写出7和-7的原码.反码.补码.(其中第一位是符号位,0表示正数,1表示负数) Demo 7 -7 原码 00000111 10000111 反码 00000111 11111000 补码 00000111 11111001 一. 机器数和真值 在学习原码

为什么一个byte的存储范围是-128~127?

为什么一个byte的存储范围是-128~127?文本关键字:byte.字节.二进制位.反码.补码文章目录为什么一个byte的存储范围是-128~127? 一.byte 二.反码与补码 **1. 反码 补码三.byte的数据范围一.byte**在计算机中,一个二进制位是最小的存储单元,由于是二进制,所以能存储的数字只能是0和1.显然,如果我们直接去操作每个二进制位将是很麻烦的过程,所以在编程中我们直接使用的是其他的数据类型,如:byte.int.float.这些数据类型能够使我们的数据存储更加方便

解读为什么有符号的char可表示范围是-128~+127

问:为什么有符号的char可表示范围是-128~+127? 要明白这个问题,首先要明白一下几点: 对于char和int计算机中以补码形式存在. 严格来说计算机就是傻逼,它只知道某个位上是0还是1. 我们人为告诉计算机一个规则:要是这8个位最高位是0,那么你这8个位中存储的是一个正数:要是这8个位最高位是1,那么你这8个位中存储的就是一个负数. 我们又告诉计算机一个规则:你这个傻逼,你里面存储的补码是个什么东西,我看不懂,你要人性化一点,把这个东西给我弄成源码,要是用十进制显示出来那最好了,于是你