首页 > 其他分享 >123按位取反是多少?原码、反码、补码及其运算

123按位取反是多少?原码、反码、补码及其运算

时间:2022-10-16 14:23:46浏览次数:85  
标签:反码 符号 二进制 补码 取反 原码

如题,在整数运算中总是不清楚某个数的取反和反码到底有什么区别,遂写下此博客,有参考的地方在文末中会贴出出处。在阅读本文章之后会对你了解计算机中一些基础有所帮助,文章包括原码、反码和补码以及运算解释,尽可能做到通俗易懂!
在解决问题之前先捋清楚以下知识点

计算机"眼中"的数字

二进制数与十进制数一样有正负之 分,我们平常书写的时候可以用“+”和“-”来表示数据的符号,这种数据的书写格式也叫做真值。由于数据只有正数、负数两种符号,因此计算机中很自然就采用二进制中的0和1来表示数据的符号,由符号和数值一起编码表示的二进制称为机器数或机器码。

机器数:

比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。
那么,这里的 00000011 和 10000011 就是机器数。

真值:

因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1

原码、反码、补码及其运算

原码:

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制:
[+5]原 = 0000 0101
[-5]原 = 1000 0101

第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:
[1111 1111 , 0111 1111]

[-127 , 127]

原码是对人来说很直观,也很熟悉

反码:

反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上, 符号位不变,其余各个位取反
[+1]=[00000001]原 = [00000001]反
[-1]=[10000001]原 = [11111110]反

可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常要将其转换成原码再计算

补码:

计算机中通常是用补码来进行运算的,在了解什么是补码之前先简要概括出补码是怎么表示的
补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

[+1] = [00000001]原 = [00000001]反 = [00000001]补
[-1] = [10000001]原 = [11111110]反 = [11111111]补

对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值
补码亦可以从时钟来了解,在我们日常中时钟最大为12个小时,那我们怎么表示超过12点的时间呢,这就运用到模的概念了

解决123按位取反是多少的问题

整数在计算机中是以二进制的补码存放的
123为正整数,其原码、反码和补码都是x=0111 1011
按位取反即是x=1000 0100转换为十进制是-124
得出结果是~123=-124

参考文章

机器数、原码、反码和补码

标签:反码,符号,二进制,补码,取反,原码
From: https://www.cnblogs.com/foxcyg/p/16776480.html

相关文章

  • 源码、反码、补码和精度损失
    数据类型转换,转换过程中可能导致溢出或损失精度1.源码:源码就是二进制的数字并且开头的一位代表符号位。例:(+1)的源码:00000001(-1)的源码:100000012.反码:正数......
  • 原码、反码、补码
    对于有符号的而言:1、二进制的最高位是符号位:0表示正数,1表示负数2、正数的原码、反码、补码都一样(三码合一)3、负数的反码=它的原码符号位不变,其他位取反4、负数的补码......
  • 位运算符:原码、反码、补码
    位移(涉及到二进制中的原码,反码,补码)⭐必记↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓:对于有符号的数而言,有以下几点1.二进制的最高位是符号位:0表示正数,1表示负数(区别......
  • 二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
    1.语言1.1机器语言人和人沟通的桥梁:语言人与计算机打交道-->学习计算机的语言-->什么是机器语言#我们目前主流的电子计算机!状态:0和1#最早的程序员:穿孔卡带!加......
  • Java基础-原码、反码、补码的理解
    注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码。 一.原码1>.正数的原码就是它的本身假设使用一个字节存储整数,整数10......
  • go中的 位预算,反码、补码、原码
    https://baike.baidu.com/item/%E4%BD%8D%E8%BF%90%E7%AE%97/6888804首先关于“位运算”,看下百度百科就行了。 总结:在go语言中,^这个符号具有取反的意思,举例:^x的意思......
  • 【Java基础】二进制的三种形式:原码、反码、补码
    1.二进制的三种形式原码:数值的二进制,最高位是符号位负数的反码:对原码按位取反,最高位确定为1负数的补码:反码+1计算机以二进制补码的形式保存所有的整数正数的原码、反......