j***a语言反码训练,j***a求反码

kodinid 9 0

大家好,今天小编关注到一个比较意思的话题,就是关于java语言反码训练的问题,于是小编就整理了2个相关介绍Java语言反码训练的解答,让我们一起看看吧。

  1. 两个负数二进制相加最后怎么换成十进制?
  2. 非运算符是什么意思?

两个负数二进制相加最后换成十进制

如果是 -111的话那就是-7, 直接转换就行了

如果是补码(***设8位), -7的二进制应该是 1111 1001, 转换成十进制的时候(最左边是1, 表示它是个负数) 先按位取反, 得到 0000 0110, 然后再+1, 得到0000 0111, 转换成正的十进制就是7, 因为它是负数(最高为是1), 所以最终结果是 -7

java语言反码训练,java求反码-第1张图片-安济编程网
图片来源网络,侵删)

十进制转二进制:

负数的二进制是原码的补码(前位补1)步骤是:原码->反码(取反)->补码(加1)

举例:-536

java语言反码训练,java求反码-第2张图片-安济编程网
(图片来源网络,侵删)

去掉负号的原码为:0000 0010 0001 1000

0和1取反得到反码:1111 1101 1110 0111

反码加1得到补码: 1111 1101 1110 1000

java语言反码训练,java求反码-第3张图片-安济编程网
(图片来源网络,侵删)

二进制转十进制:

负数的二进制是补码,得到原码的步骤是:补码->反码(补码-1)->原码(反码取反)

举例:1111 1101 1110 1000

运算符什么意思?

运算符(~)

运算规则:如果位为0,结果是1,如果位为1,结果是0.

    在J***a中,所有数据的表示方法都是以补码的形式表示

如:~37

8转为二进制是100101.

补码后为: 00000000 00000000 00000000 00100101

取反为: 11111111 11111111 11111111 11011010

     因为高位是1,所以原码为负数,负数的补码是其绝对值的原码取反,末尾再加1。

     因此,我们可将这个二进制数的补码进行还原: 首先,末尾减1得反码:11111111 11111111 11111111 11011001 其次,将各位取反得原码:

00000000 00000000 00000000 00100110,此时二进制转原码为38

在C语言中,非运算符号是“!”,它是一个单目运算符,且参与运算的量必须是布尔量。或参与运算的量的值是1(1表示真,0表示***),则结果是0,若参与运算的量的值是0,则结果就是1。例如有两个整型变量a和b,若a的值是3,b的值是4,则!(a>b)的运算结果就是1,因a小于b,a>b不成立,值是0,然后再求非,结果就是1了。

到此,以上就是小编对于j***a语言反码训练的问题就介绍到这了,希望介绍关于j***a语言反码训练的2点解答对大家有用。

标签: 补码 反码 二进制